diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index b6a9a159..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "root": true, - "env": {}, - "extends": [], - "globals": {}, - "plugins": [], - "ignorePatterns": [ - "node_modules/", "dist/", "webpack.config.js", - "build/", - "vendor/", - "support/documentation", - "build-*js"], - "rules": {} -} diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..8106cec5 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,40 @@ +# SPDX-FileCopyrightText: 2024 John Livingston +# +# SPDX-License-Identifier: AGPL-3.0-only + +version: 2 +updates: +- package-ecosystem: npm + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 + + groups: + minor-and-patch: + applies-to: version-updates + update-types: + - "patch" + - "minor" + + versioning-strategy: increase + + ignore: + - dependency-name: typescript + versions: + - ">=5.6.0" # linting libs are not ready for 5.6 + - dependency-name: "@types/node" + versions: + - ">=17.0.0" # must be set to the Peertube required version. + - dependency-name: "@peertube/peertube-types" + versions: + - ">5.2.0" # must be set to the Peertube required version. + - dependency-name: eslint + versions: + - ">=9.0.0" # not ready for v9, missing dependencies. + - dependency-name: got + versions: + - ">=12.0.0" # breaking changes, must adapt code. + - dependency-name: "@typescript-eslint/parser" + versions: + - ">=8.5.0" # for now 8.5.0 is broken because of the lack of ./tsconfig.json file. Must fix conf. diff --git a/.github/workflows/gh-build.yml b/.github/workflows/gh-build.yml new file mode 100644 index 00000000..87f4eee0 --- /dev/null +++ b/.github/workflows/gh-build.yml @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: 2024 John Livingston +# +# SPDX-License-Identifier: AGPL-3.0-only + +name: github build and lint + +on: + push: + branches: + - main + pull_request: + types: [assigned, opened, synchronize, reopened] + +jobs: + build: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + with: + submodules: false # Fetch Hugo themes (true OR recursive) + fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod + + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + + - name: Install build dependencies + run: sudo apt update && sudo apt install wget reuse -y + + - name: Build + run: npm install + + - name: Lint + run: npm run lint diff --git a/.stylelintrc.js b/.stylelintrc.js index 1fecbcd5..c79d5b56 100644 --- a/.stylelintrc.js +++ b/.stylelintrc.js @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0-only -'use strict'; +'use strict' module.exports = { extends: [ @@ -14,7 +14,7 @@ module.exports = { // extending the kebab-case to accept ConverseJS class names. '^([a-z][a-z0-9]*)(-[a-z0-9]+)*((__|--)[a-z]+(-[a-z0-9]+)*)?$', { - message: 'Expected class selector to be kebab-case, or ConverseJS-style.', + message: 'Expected class selector to be kebab-case, or ConverseJS-style.' } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e08072f..692437e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## 12.0.0 + +### Importante Notes + +This version requires Peertube 5.2.0 or superior. +It also requires NodeJS 16 or superior (same as Peertube 5.2.0.). + +If you use the "system Prosody", you should update to Prosody 0.12.4, and Lua 5.4. + +### New features + +* #131: Emoji only mode. +* #516: new option for the moderation bot: forbid duplicate messages. +* #517: new option for the moderation bot: forbid messages with too many special characters. +* #518: moderators can send announcements and highlighted messages. +* #610: compatibility with PeerTube v7 + +### Minor changes and fixes + +* Updating ConverseJS (v11 WIP) with latest fixes. +* Updating Prosody AppImage to Prosody 0.12.4 + Lua 5.4. +* Various translation updates. +* Using Typescript 5.5.4, and Eslint 8.57.0 (with new ruleset). +* Fix race condition in bot/ctl. +* Various type improvements. +* Update dependencies. +* Fix emoji picker colors and size. +* Fix: moderation delay max value was not correctly handled. + ## 11.0.1 ### Minor changes and fixes diff --git a/assets/styles/admin/firewall/_firewall.scss b/assets/styles/admin/firewall/_firewall.scss index 1871a09b..53cfb3a4 100644 --- a/assets/styles/admin/firewall/_firewall.scss +++ b/assets/styles/admin/firewall/_firewall.scss @@ -15,7 +15,7 @@ /* See Peertube sub-menu-h1 mixin */ font-size: 1.3rem; - border-bottom: 2px solid var(--greyBackgroundColor); + border-bottom: 2px solid var(--bg-secondary-400, var(--greyBackgroundColor)); padding-bottom: 15px; } @@ -42,45 +42,49 @@ input[type="submit"], button[type="submit"] { - // Peertube orange-button mixin &, &:active, + &.active, &:focus { - color: #fff; - background-color: var(--mainColor); + color: var(--on-primary, #fff); + background-color: var(--primary, var(--mainColor)); + border: 1px solid var(--primary, var(--mainColor)); } &:hover { - color: #fff; - background-color: var(--mainHoverColor); + color: var(--on-primary, #fff); + background-color: var(--primary-400, var(--mainHoverColor)); } - &[disabled], - &.disabled { - cursor: default; - color: #fff; - background-color: var(--inputBorderColor); + &[disabled] { + pointer-events: none; + opacity: 0.6; } } input[type="reset"], button[type="reset"] { - // Peertube grey-button mixin - background-color: var(--greyBackgroundColor); - color: var(--greyForegroundColor); + color: var(--fg, var(--mainForegroundColor)); + background-color: transparent; + border: 1px solid var(--bg-secondary-500, var(--inputBorderColor)) !important; - &:hover, &:active, + &.active, &:focus, - &[disabled], - &.disabled { - color: var(--greyForegroundColor); - background-color: var(--greySecondaryBackgroundColor); + &:focus-visible { + color: var(--fg, var(--mainForegroundColor)); + background-color: var(--bg-secondary-500, var(--inputBorderColor)); + border-color: var(--bg-secondary-500, var(--inputBorderColor)); } - &[disabled], - &.disabled { - cursor: default; + &:hover { + color: var(--fg, var(--mainForegroundColor)); + background-color: var(--bg-secondary-450, var(--inputBorderColor)); + } + + &[disabled] { + pointer-events: none; + opacity: 0.8; } } diff --git a/assets/styles/configuration/_configuration.scss b/assets/styles/configuration/_configuration.scss index 99094c4b..60c51c69 100644 --- a/assets/styles/configuration/_configuration.scss +++ b/assets/styles/configuration/_configuration.scss @@ -21,7 +21,7 @@ $small-view: 800px; /* See Peertube sub-menu-h1 mixin */ font-size: 1.3rem; - border-bottom: 2px solid var(--greyBackgroundColor); + border-bottom: 2px solid var(--bg-secondary-400, var(--greyBackgroundColor)); padding-bottom: 15px; } @@ -29,7 +29,7 @@ $small-view: 800px; &.peertube-plugin-livechat-configuration-channel { .peertube-plugin-livechat-configuration-channel-info { /* stylelint-disable-next-line value-keyword-case */ - color: var(--mainForegroundColor); + color: var(--fg, var(--mainForegroundColor)); span:first-child { /* See Peertube .video-channel-display-name */ @@ -48,7 +48,7 @@ $small-view: 800px; h2 { // See Peertube settings-big-title mixin text-transform: uppercase; - color: var(--mainColor); + color: var(--primary, var(--mainColor)); font-weight: variables.$font-bold; font-size: 1rem; margin-bottom: 10px; @@ -82,35 +82,35 @@ $small-view: 800px; &:active, &:focus { color: #fff; - background-color: var(--mainColor); + background-color: var(--primary, var(--mainColor)); } &:hover { color: #fff; - background-color: var(--mainHoverColor); + background-color: var(--fg-400, var(--mainHoverColor)); } &[disabled], &.disabled { cursor: default; color: #fff; - background-color: var(--inputBorderColor); + background-color: var(--input-border-color, var(--inputBorderColor)); } } input[type="reset"], button[type="reset"] { // Peertube grey-button mixin - background-color: var(--greyBackgroundColor); - color: var(--greyForegroundColor); + background-color: var(--bg-secondary-400, var(--greyBackgroundColor)); + color: var(--fg-400, var(--greyForegroundColor)); &:hover, &:active, &:focus, &[disabled], &.disabled { - color: var(--greyForegroundColor); - background-color: var(--greySecondaryBackgroundColor); + color: var(--fg-400, var(--greyForegroundColor)); + background-color: var(--bg-secondary-300, var(--greySecondaryBackgroundColor)); } &[disabled], @@ -174,6 +174,12 @@ $small-view: 800px; a { /* See Peertube .video-channel-names */ + width: fit-content; + display: flex; + align-items: baseline; + /* stylelint-disable-next-line value-keyword-case */ + color: var(--fg, var(--mainForegroundColor)); + &:hover, &:focus, &:active { @@ -184,12 +190,6 @@ $small-view: 800px; outline: none !important; } - width: fit-content; - display: flex; - align-items: baseline; - /* stylelint-disable-next-line value-keyword-case */ - color: var(--mainForegroundColor); - div:first-child { /* See Peertube .video-channel-display-name */ font-weight: variables.$font-semibold; diff --git a/assets/styles/elements/_share-chat.scss b/assets/styles/elements/_share-chat.scss index 280e243b..a37dfae4 100644 --- a/assets/styles/elements/_share-chat.scss +++ b/assets/styles/elements/_share-chat.scss @@ -56,7 +56,7 @@ livechat-share-chat { &.livechat-shareurl-suboptions-disabled { label { /* stylelint-disable-next-line custom-property-pattern */ - color: var(--greyForegroundColor); + color: var(--fg-400, var(--greyForegroundColor)); } } } diff --git a/assets/styles/elements/_spinner.scss b/assets/styles/elements/_spinner.scss index 9fa9e39d..148a2be3 100644 --- a/assets/styles/elements/_spinner.scss +++ b/assets/styles/elements/_spinner.scss @@ -15,9 +15,9 @@ livechat-spinner, height: 48px; margin: 20px; /* stylelint-disable-next-line custom-property-pattern */ - border: 5px solid var(--greyBackgroundColor) !important; // !important is required for it to work in ConverseJS + border: 5px solid var(--bg-secondary-400, var(--greyBackgroundColor)) !important; // !important is required for it to work in ConverseJS /* stylelint-disable-next-line custom-property-pattern */ - border-bottom-color: var(--mainColor) !important; // !important is required for it to work in ConverseJS + border-bottom-color: var(--primary, var(--mainColor)) !important; // !important is required for it to work in ConverseJS border-radius: 50%; display: inline-block; box-sizing: border-box; diff --git a/assets/styles/elements/_tags-input.scss b/assets/styles/elements/_tags-input.scss index e667ff06..49aea29f 100644 --- a/assets/styles/elements/_tags-input.scss +++ b/assets/styles/elements/_tags-input.scss @@ -51,14 +51,14 @@ livechat-tags-input { transition-duration: 0.3s; @supports (scrollbar-width: auto) { - scrollbar-color: var(--greyForegroundColor) transparent; + scrollbar-color: var(--fg-400, var(--greyForegroundColor)) transparent; scrollbar-width: thin; } } .livechat-tags-container, .livechat-tags-searched { - border-bottom: 1px dashed var(--greyForegroundColor); + border-bottom: 1px dashed var(--fg-400, var(--greyForegroundColor)); &.livechat-empty { height: 0; @@ -104,7 +104,7 @@ livechat-tags-input { text-align: center; font-size: 10px; margin-left: var(--tag-padding-horizontal); - color: var(--mainColor); + color: var(--primary, var(--mainColor)); border-radius: 50%; background: #fff; cursor: pointer; @@ -118,19 +118,19 @@ livechat-tags-input { &:active, &:focus { color: #fff; - background-color: var(--mainColor); + background-color: var(--primary, var(--mainColor)); .livechat-tag-close { - color: var(--mainColor); + color: var(--primary, var(--mainColor)); } } &:hover { color: #fff; - background-color: var(--mainHoverColor); + background-color: var(--fg-400, var(--mainHoverColor)); .livechat-tag-close { - color: var(--mainHoverColor); + color: var(--fg-400, var(--mainHoverColor)); } } @@ -138,10 +138,10 @@ livechat-tags-input { &.disabled { cursor: default; color: #fff; - background-color: var(--inputBorderColor); + background-color: var(--input-border-color, var(--inputBorderColor)); .livechat-tag-close { - color: var(--inputBorderColor); + color: var(--input-border-color, var(--inputBorderColor)); } } diff --git a/assets/styles/elements/_token-list.scss b/assets/styles/elements/_token-list.scss index 0f80b15e..4fa7a50b 100644 --- a/assets/styles/elements/_token-list.scss +++ b/assets/styles/elements/_token-list.scss @@ -9,10 +9,10 @@ livechat-token-list { table { - @include tables.data-table; - width: 100%; + @include tables.data-table; + tr th:first-child, tr th:last-child { width: 50px; diff --git a/assets/styles/list-rooms/_list-rooms.scss b/assets/styles/list-rooms/_list-rooms.scss index 0c601f53..aa601261 100644 --- a/assets/styles/list-rooms/_list-rooms.scss +++ b/assets/styles/list-rooms/_list-rooms.scss @@ -19,7 +19,7 @@ table.peertube-plugin-livechat-prosody-list-rooms tr:nth-child(even) { table.peertube-plugin-livechat-prosody-list-rooms th { /* stylelint-disable-next-line custom-property-pattern */ - background-color: var(--mainHoverColor); + background-color: var(--fg-400, var(--mainHoverColor)); border: 1px solid black; /* stylelint-disable-next-line custom-property-pattern */ color: var(--mainBackgroundColor); diff --git a/assets/styles/mixins/_buttons.scss b/assets/styles/mixins/_buttons.scss index c9d70f13..2bb7c9d2 100644 --- a/assets/styles/mixins/_buttons.scss +++ b/assets/styles/mixins/_buttons.scss @@ -54,7 +54,7 @@ $bs-green: #39cc0b; &.disabled { cursor: default; color: #fff; - background-color: var(--inputBorderColor); + background-color: var(--input-border-color, var(--inputBorderColor)); } } @@ -67,7 +67,7 @@ $bs-green: #39cc0b; &:active, &:focus { color: #fff; - background-color: var(--mainColor); + background-color: var(--primary, var(--mainColor)); } &:focus, @@ -77,13 +77,13 @@ $bs-green: #39cc0b; &:hover { color: #fff; - background-color: var(--mainHoverColor); + background-color: var(--fg-400, var(--mainHoverColor)); } &[disabled], &.disabled { cursor: default; color: #fff; - background-color: var(--inputBorderColor); + background-color: var(--input-border-color, var(--inputBorderColor)); } } diff --git a/assets/styles/mixins/tables.scss b/assets/styles/mixins/tables.scss index dd7ce961..7db800ad 100644 --- a/assets/styles/mixins/tables.scss +++ b/assets/styles/mixins/tables.scss @@ -13,7 +13,7 @@ text-align: center; tr { - border: 1px var(--greyBackgroundColor) solid; + border: 1px var(--bg-secondary-400, var(--greyBackgroundColor)) solid; } td, @@ -34,6 +34,6 @@ } tbody tr:nth-child(odd) { - background-color: var(--greySecondaryBackgroundColor); + background-color: var(--bg-secondary-300, var(--greySecondaryBackgroundColor)); } } diff --git a/assets/styles/style.scss b/assets/styles/style.scss index 1dbc8f8a..8b627c84 100644 --- a/assets/styles/style.scss +++ b/assets/styles/style.scss @@ -10,4 +10,4 @@ @use "video"; @use "configuration/configuration"; @use "admin/firewall/firewall"; -@use "list-rooms/list-rooms.scss"; +@use "list-rooms/list-rooms"; diff --git a/assets/styles/video/_container.scss b/assets/styles/video/_container.scss index 4cb620b8..eaa87a7e 100644 --- a/assets/styles/video/_container.scss +++ b/assets/styles/video/_container.scss @@ -34,7 +34,7 @@ min-height: max(30vh, 300px); } - @media screen and (orientation: portrait) and (max-width: 767px) { + @media screen and (orientation: portrait) and (width <= 767px) { /* On small screen, and when portrait mode, we are giving the chat more vertical space. It should go under the video. */ diff --git a/build-client.js b/build-client.js index 2748d406..461be46c 100644 --- a/build-client.js +++ b/build-client.js @@ -15,7 +15,7 @@ const clientFiles = [ 'admin-plugin-client-plugin' ] -function loadLocs() { +function loadLocs(globalFile) { // Loading english strings, so we can inject them as constants. const refFile = path.resolve(__dirname, 'dist', 'languages', 'en.reference.json') if (!fs.existsSync(refFile)) { @@ -25,7 +25,6 @@ function loadLocs() { // Reading client/@types/global.d.ts, to have a list of needed localized strings. const r = {} - const globalFile = path.resolve(__dirname, 'client', '@types', 'global.d.ts') const globalFileContent = '' + fs.readFileSync(globalFile) const matches = globalFileContent.matchAll(/^declare const LOC_(\w+)\b/gm) for (const match of matches) { @@ -41,7 +40,7 @@ function loadLocs() { const define = Object.assign({ PLUGIN_CHAT_PACKAGE_NAME: JSON.stringify(packagejson.name), PLUGIN_CHAT_SHORT_NAME: JSON.stringify(packagejson.name.replace(/^peertube-plugin-/, '')) -}, loadLocs()) +}, loadLocs(path.resolve(__dirname, 'client', '@types', 'global.d.ts'))) const configs = clientFiles.map(f => ({ entryPoints: [ path.resolve(__dirname, 'client', f + '.ts') ], @@ -59,8 +58,14 @@ const configs = clientFiles.map(f => ({ outfile: path.resolve(__dirname, 'dist/client', f + '.js'), })) +const defineBuiltin = Object.assign( + {}, + loadLocs(path.resolve(__dirname, 'conversejs', 'lib', '@types', 'global.d.ts')) +) + configs.push({ entryPoints: ["./conversejs/builtin.ts"], + define: defineBuiltin, bundle: true, minify: true, sourcemap, diff --git a/build-prosody.sh b/build-prosody.sh index 301efd70..43ad22d8 100644 --- a/build-prosody.sh +++ b/build-prosody.sh @@ -10,12 +10,12 @@ set -euo pipefail # This script download the Prosody AppImage from the https://github.com/JohnXLivingston/prosody-appimage project. repo_base_url='https://github.com/JohnXLivingston/prosody-appimage/releases/download' -wanted_release='v0.12.3-1' +wanted_release='v0.12.4-3' x86_64_filename='prosody-x86_64.AppImage' -x86_64_sha256sum='f4af9bfefa2f804ad7e8b03a68f04194abb801f070ae620b3d4bcedb144e8523' +x86_64_sha256sum='83a583ac7036387514bed17afab257dab4161ccdd0ab7453818c78b51f830357' aarch64_filename='prosody-aarch64.AppImage' -aarch64_sha256sum='878c5be719e1e36a84d637fd2bd44e3059aa91ddb6906ad05f1dd0334078df09' +aarch64_sha256sum='7b7e6bf30d4498fc99a40022232c3065707ee4f4df24dc17947b007621634304' download_dir="$(pwd)/vendor/prosody-appimage" dist_dir="$(pwd)/dist/server/prosody" diff --git a/client/.eslintrc.json b/client/.eslintrc.json deleted file mode 100644 index caad67fd..00000000 --- a/client/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "standard-with-typescript", - "plugin:lit/recommended" - ], - "globals": {}, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2018, - "project": [ - "./client/tsconfig.json" - ] - }, - "plugins": [ - "@typescript-eslint" - ], - "ignorePatterns": [], - "rules": { - "@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_"}], - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/strict-boolean-expressions": "off", - "@typescript-eslint/return-await": [2, "in-try-catch"], // FIXME: correct? - "@typescript-eslint/no-invalid-void-type": "off", - "@typescript-eslint/triple-slash-reference": "off", - "max-len": [ - "error", - { - "code": 120, - "comments": 120 - } - ], - "no-unused-vars": "off" - } -} diff --git a/client/.eslintrc.json.license b/client/.eslintrc.json.license deleted file mode 100644 index b253ad42..00000000 --- a/client/.eslintrc.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2024 John Livingston - -SPDX-License-Identifier: AGPL-3.0-only diff --git a/client/@types/global.d.ts b/client/@types/global.d.ts index 13bbbbfc..ccb7d1e9 100644 --- a/client/@types/global.d.ts +++ b/client/@types/global.d.ts @@ -57,12 +57,12 @@ declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_BOT_OPTIONS_TITLE: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_DESC: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_DESC2: string -declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REASON_LABEL: string -declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REASON_DESC: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_RETRACTATION_REASON_LABEL: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_RETRACTATION_REASON_DESC: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REGEXP_LABEL: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REGEXP_DESC: string -declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_LABEL: string -declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_DESC: string +declare const LOC_LIVECHAT_CONFIGURATION_APPLYTOMODERATORS_LABEL: string +declare const LOC_LIVECHAT_CONFIGURATION_APPLYTOMODERATORS_DESC: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL_LABEL: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL_DESC: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_COMMENTS_LABEL: string @@ -144,3 +144,19 @@ declare const LOC_PROSODY_FIREWALL_FILE_ENABLED: string declare const LOC_PROSODY_FIREWALL_NAME: string declare const LOC_PROSODY_FIREWALL_NAME_DESC: string declare const LOC_PROSODY_FIREWALL_CONTENT: string + +declare const LOC_EMOJI_ONLY_MODE_TITLE: string +declare const LOC_EMOJI_ONLY_MODE_DESC_1: string +declare const LOC_EMOJI_ONLY_MODE_DESC_2: string +declare const LOC_EMOJI_ONLY_MODE_DESC_3: string +declare const LOC_EMOJI_ONLY_ENABLE_ALL_ROOMS: string + +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_SPECIAL_CHARS_LABEL: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_SPECIAL_CHARS_DESC: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_SPECIAL_CHARS_TOLERANCE_LABEL: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_SPECIAL_CHARS_TOLERANCE_DESC: string + +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_NO_DUPLICATE_LABEL: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_NO_DUPLICATE_DESC: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_NO_DUPLICATE_DELAY_LABEL: string +declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_NO_DUPLICATE_DELAY_DESC: string diff --git a/client/admin-plugin-client-plugin.ts b/client/admin-plugin-client-plugin.ts index 7b0f872b..17c02c9c 100644 --- a/client/admin-plugin-client-plugin.ts +++ b/client/admin-plugin-client-plugin.ts @@ -143,7 +143,7 @@ function register (clientOptions: RegisterClientOptions): void { lastActivityEl.textContent = date.toLocaleDateString() + ' ' + date.toLocaleTimeString() } const promoteButton = document.createElement('a') - promoteButton.classList.add('orange-button', 'peertube-button-link') + promoteButton.classList.add('primary-button', 'orange-button', 'peertube-button-link') promoteButton.style.margin = '5px' promoteButton.onclick = async () => { await fetch( @@ -243,7 +243,10 @@ function register (clientOptions: RegisterClientOptions): void { } } catch (error: any) { console.error(error) - peertubeHelpers.notifier.error(error.toString(), await peertubeHelpers.translate(LOC_LOADING_ERROR)) + peertubeHelpers.notifier.error( + (error as Error).toString(), + await peertubeHelpers.translate(LOC_LOADING_ERROR) + ) } } }) diff --git a/client/common-client-plugin.ts b/client/common-client-plugin.ts index af7e1d46..05b4bc2c 100644 --- a/client/common-client-plugin.ts +++ b/client/common-client-plugin.ts @@ -46,7 +46,7 @@ async function register (clientOptions: RegisterClientOptions): Promise { ]) const webchatFieldOptions: RegisterClientFormFieldOptions = { name: 'livechat-active', - label: label, + label, descriptionHTML: description, type: 'input-checkbox', default: true, diff --git a/client/common/admin/firewall/elements/admin-firewall.ts b/client/common/admin/firewall/elements/admin-firewall.ts index aba28c90..7ef0db68 100644 --- a/client/common/admin/firewall/elements/admin-firewall.ts +++ b/client/common/admin/firewall/elements/admin-firewall.ts @@ -22,7 +22,7 @@ export class AdminFirewallElement extends LivechatElement { public validationError?: ValidationError @state() - public actionDisabled: boolean = false + public actionDisabled = false private _asyncTaskRender: Task @@ -101,9 +101,9 @@ export class AdminFirewallElement extends LivechatElement { }) } - public readonly getInputValidationClass = (propertyName: string): { [key: string]: boolean } => { + public readonly getInputValidationClass = (propertyName: string): Record => { const validationErrorTypes: ValidationErrorType[] | undefined = - this.validationError?.properties[`${propertyName}`] + this.validationError?.properties[propertyName] return validationErrorTypes ? (validationErrorTypes.length ? { 'is-invalid': true } : { 'is-valid': true }) : {} } @@ -111,7 +111,7 @@ export class AdminFirewallElement extends LivechatElement { propertyName: string): TemplateResult | typeof nothing => { const errorMessages: TemplateResult[] = [] const validationErrorTypes: ValidationErrorType[] | undefined = - this.validationError?.properties[`${propertyName}`] ?? undefined + this.validationError?.properties[propertyName] ?? undefined // FIXME: this code is duplicated in dymamic table form if (validationErrorTypes && validationErrorTypes.length !== 0) { diff --git a/client/common/admin/firewall/templates/admin-firewall.ts b/client/common/admin/firewall/templates/admin-firewall.ts index ffa430c9..0d929d60 100644 --- a/client/common/admin/firewall/templates/admin-firewall.ts +++ b/client/common/admin/firewall/templates/admin-firewall.ts @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import type { AdminFirewallElement } from '../elements/admin-firewall' import type { TemplateResult } from 'lit' import type { DynamicFormHeader, DynamicFormSchema } from '../../../lib/elements/dynamic-table-form' @@ -64,7 +67,7 @@ export function tplAdminFirewall (el: AdminFirewallElement): TemplateResult { .maxLines=${maxFirewallFiles} .validation=${el.validationError?.properties} .validationPrefix=${'files'} - .rows=${el.firewallConfiguration?.files} + .rows=${el.firewallConfiguration?.files ?? []} @update=${(e: CustomEvent) => { el.resetValidation(e) if (el.firewallConfiguration) { diff --git a/client/common/configuration/elements/channel-configuration.ts b/client/common/configuration/elements/channel-configuration.ts index 7e6edd66..c15038fd 100644 --- a/client/common/configuration/elements/channel-configuration.ts +++ b/client/common/configuration/elements/channel-configuration.ts @@ -32,7 +32,7 @@ export class ChannelConfigurationElement extends LivechatElement { public validationError?: ValidationError @state() - public actionDisabled: boolean = false + public actionDisabled = false private _asyncTaskRender: Task @@ -113,9 +113,9 @@ export class ChannelConfigurationElement extends LivechatElement { } } - public readonly getInputValidationClass = (propertyName: string): { [key: string]: boolean } => { + public readonly getInputValidationClass = (propertyName: string): Record => { const validationErrorTypes: ValidationErrorType[] | undefined = - this.validationError?.properties[`${propertyName}`] + this.validationError?.properties[propertyName] return validationErrorTypes ? (validationErrorTypes.length ? { 'is-invalid': true } : { 'is-valid': true }) : {} } @@ -123,7 +123,7 @@ export class ChannelConfigurationElement extends LivechatElement { propertyName: string): TemplateResult | typeof nothing => { const errorMessages: TemplateResult[] = [] const validationErrorTypes: ValidationErrorType[] | undefined = - this.validationError?.properties[`${propertyName}`] ?? undefined + this.validationError?.properties[propertyName] ?? undefined // FIXME: this code is duplicated in dymamic table form if (validationErrorTypes && validationErrorTypes.length !== 0) { diff --git a/client/common/configuration/elements/channel-emojis.ts b/client/common/configuration/elements/channel-emojis.ts index 126e4c67..d6957153 100644 --- a/client/common/configuration/elements/channel-emojis.ts +++ b/client/common/configuration/elements/channel-emojis.ts @@ -30,7 +30,7 @@ export class ChannelEmojisElement extends LivechatElement { public validationError?: ValidationError @state() - public actionDisabled: boolean = false + public actionDisabled = false private _asyncTaskRender: Task @@ -192,7 +192,7 @@ export class ChannelEmojisElement extends LivechatElement { throw new Error('Invalid data') } - const url = await this._convertImageToDataUrl(entry.url) + const url = await this._convertImageToDataUrl(entry.url as string) const sn = entry.sn as string const item: ChannelEmojisConfiguration['emojis']['customEmojis'][0] = { @@ -211,7 +211,7 @@ export class ChannelEmojisElement extends LivechatElement { await this.ptTranslate(LOC_ACTION_IMPORT_EMOJIS_INFO) ) } catch (err: any) { - this.ptNotifier.error(err.toString(), await this.ptTranslate(LOC_ERROR)) + this.ptNotifier.error((err as Error).toString(), await this.ptTranslate(LOC_ERROR)) } finally { this.actionDisabled = false } @@ -250,12 +250,27 @@ export class ChannelEmojisElement extends LivechatElement { a.remove() } catch (err: any) { this.logger.error(err) - this.ptNotifier.error(err.toString()) + this.ptNotifier.error((err as Error).toString()) } finally { this.actionDisabled = false } } + public async enableEmojisOnlyModeOnAllRooms (ev: Event): Promise { + ev.preventDefault() + if (!this._channelDetailsService || !this.channelId) { + this.ptNotifier.error(await this.ptTranslate(LOC_ERROR)) + return + } + try { + await this._channelDetailsService.enableEmojisOnlyModeOnAllRooms(this.channelId) + this.ptNotifier.info(await this.ptTranslate(LOC_SUCCESSFULLY_SAVED)) + } catch (err) { + console.error(err) + this.ptNotifier.error(await this.ptTranslate(LOC_ERROR)) + } + } + /** * Takes an url (or dataUrl), download the image, and converts to dataUrl. * @param url the url diff --git a/client/common/configuration/elements/channel-home.ts b/client/common/configuration/elements/channel-home.ts index 0a861ccc..e66c2b69 100644 --- a/client/common/configuration/elements/channel-home.ts +++ b/client/common/configuration/elements/channel-home.ts @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { customElement, state } from 'lit/decorators.js' import { ptTr } from '../../lib/directives/translation' diff --git a/client/common/configuration/elements/channel-tabs.ts b/client/common/configuration/elements/channel-tabs.ts index 2470a315..ab31f80e 100644 --- a/client/common/configuration/elements/channel-tabs.ts +++ b/client/common/configuration/elements/channel-tabs.ts @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { LivechatElement } from '../../lib/elements/livechat' import { ptTr } from '../../lib/directives/translation' import { html, TemplateResult } from 'lit' diff --git a/client/common/configuration/elements/templates/channel-configuration.ts b/client/common/configuration/elements/templates/channel-configuration.ts index ff950eec..293af21d 100644 --- a/client/common/configuration/elements/templates/channel-configuration.ts +++ b/client/common/configuration/elements/templates/channel-configuration.ts @@ -2,14 +2,18 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import type { ChannelConfigurationElement } from '../channel-configuration' import type { DynamicFormHeader, DynamicFormSchema } from '../../../lib/elements/dynamic-table-form' import { ptTr } from '../../../lib/directives/translation' import { html, TemplateResult } from 'lit' import { classMap } from 'lit/directives/class-map.js' +import { noDuplicateMaxDelay, forbidSpecialCharsMaxTolerance } from 'shared/lib/constants' export function tplChannelConfiguration (el: ChannelConfigurationElement): TemplateResult { - const tableHeaderList: {[key: string]: DynamicFormHeader} = { + const tableHeaderList: Record = { forbiddenWords: { entries: { colName: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL), @@ -20,16 +24,16 @@ export function tplChannelConfiguration (el: ChannelConfigurationElement): Templ description: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REGEXP_DESC) }, applyToModerators: { - colName: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_LABEL), - description: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_DESC) + colName: ptTr(LOC_LIVECHAT_CONFIGURATION_APPLYTOMODERATORS_LABEL), + description: ptTr(LOC_LIVECHAT_CONFIGURATION_APPLYTOMODERATORS_DESC) }, label: { colName: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL_LABEL), description: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL_DESC) }, reason: { - colName: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REASON_LABEL), - description: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REASON_DESC) + colName: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_RETRACTATION_REASON_LABEL), + description: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_RETRACTATION_REASON_DESC) }, comments: { colName: ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_COMMENTS_LABEL), @@ -57,7 +61,7 @@ export function tplChannelConfiguration (el: ChannelConfigurationElement): Templ } } } - const tableSchema: {[key: string]: DynamicFormSchema} = { + const tableSchema: Record = { forbiddenWords: { entries: { inputType: 'tags', @@ -337,6 +341,246 @@ export function tplChannelConfiguration (el: ChannelConfigurationElement): Templ ${el.renderFeedback('peertube-livechat-bot-nickname-feedback', 'bot.nickname')} + + +
+ +
+ ${!el.channelConfiguration?.configuration.bot.forbidSpecialChars.enabled + ? '' + : html` +
+ + + ${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_SPECIAL_CHARS_TOLERANCE_DESC)} + + ${el.renderFeedback('peertube-livechat-forbid-special-chars-tolerance-feedback', + 'bot.forbidSpecialChars.tolerance') + } +
+
+ + + ${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_RETRACTATION_REASON_DESC)} + + ${el.renderFeedback('peertube-livechat-forbid-special-chars-reason-feedback', + 'bot.forbidSpecialChars.reason') + } +
+
+ + + ${ptTr(LOC_LIVECHAT_CONFIGURATION_APPLYTOMODERATORS_DESC)} + +
+ ` + } + + + +
+ +
+ ${!el.channelConfiguration?.configuration.bot.noDuplicate.enabled + ? '' + : html` +
+ + + ${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_NO_DUPLICATE_DELAY_DESC)} + + ${el.renderFeedback('peertube-livechat-no-duplicate-delay-feedback', + 'bot.noDuplicate.delay') + } +
+
+ + + ${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_RETRACTATION_REASON_DESC)} + + ${el.renderFeedback('peertube-livechat-no-duplicate-reason-feedback', + 'bot.noDuplicate.reason') + } +
+
+ + + ${ptTr(LOC_LIVECHAT_CONFIGURATION_APPLYTOMODERATORS_DESC)} + +
+ ` + } + +

${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_EMOJIS_TITLE)}

+

${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_EMOJIS_DESC)}

-
${ @@ -86,7 +90,7 @@ export function tplChannelEmojis (el: ChannelEmojisElement): TemplateResult { .maxLines=${maxEmojisPerChannel} .validation=${el.validationError?.properties} .validationPrefix=${'emojis'} - .rows=${el.channelEmojisConfiguration?.emojis.customEmojis} + .rows=${el.channelEmojisConfiguration?.emojis.customEmojis ?? []} @update=${(e: CustomEvent) => { el.resetValidation(e) if (el.channelEmojisConfiguration) { @@ -106,5 +110,23 @@ export function tplChannelEmojis (el: ChannelEmojisElement): TemplateResult {
+ +

${ptTr(LOC_EMOJI_ONLY_MODE_TITLE)}

+ +

+ ${ptTr(LOC_EMOJI_ONLY_MODE_DESC_1, true)} +

+

+ ${ptTr(LOC_EMOJI_ONLY_MODE_DESC_2, true)} +

+

+ ${ptTr(LOC_EMOJI_ONLY_MODE_DESC_3, true)} +

+ +
+ +
` } diff --git a/client/common/configuration/register.ts b/client/common/configuration/register.ts index 2dc36d88..447d524e 100644 --- a/client/common/configuration/register.ts +++ b/client/common/configuration/register.ts @@ -66,15 +66,16 @@ async function registerConfiguration (clientOptions: RegisterClientOptions): Pro for (const link of links) { if (typeof link !== 'object') { continue } if (!('key' in link)) { continue } - if (link.key !== 'in-my-library') { continue } - myLibraryLinks = link - break + if (link.key === 'in-my-library' || link.key === 'my-video-space') { + myLibraryLinks = link + break + } } if (!myLibraryLinks) { return links } if (!Array.isArray(myLibraryLinks.links)) { return links } const label = await peertubeHelpers.translate(LOC_MENU_CONFIGURATION_LABEL) - myLibraryLinks.links.push({ + myLibraryLinks.links.unshift({ label, shortLabel: label, path: '/p/livechat/configuration', diff --git a/client/common/configuration/services/channel-details.ts b/client/common/configuration/services/channel-details.ts index 99808d41..d372ca7f 100644 --- a/client/common/configuration/services/channel-details.ts +++ b/client/common/configuration/services/channel-details.ts @@ -11,7 +11,7 @@ import type { import { ValidationError, ValidationErrorType } from '../../lib/models/validation' import { getBaseRoute } from '../../../utils/uri' import { maxEmojisPerChannel } from 'shared/lib/emojis' -import { channelTermsMaxLength } from 'shared/lib/constants' +import { channelTermsMaxLength, noDuplicateMaxDelay, forbidSpecialCharsMaxTolerance } from 'shared/lib/constants' export class ChannelDetailsService { public _registerClientOptions: RegisterClientOptions @@ -67,11 +67,43 @@ export class ChannelDetailsService { // The backend will ignore those values. if (botConf.enabled) { propertiesError['bot.nickname'] = [] + propertiesError['bot.forbidSpecialChars.tolerance'] = [] + propertiesError['bot.noDuplicate.delay'] = [] if (/[^\p{L}\p{N}\p{Z}_-]/u.test(botConf.nickname ?? '')) { propertiesError['bot.nickname'].push(ValidationErrorType.WrongFormat) } + if (botConf.forbidSpecialChars.enabled) { + const forbidSpecialCharsTolerance = channelConfigurationOptions.bot.forbidSpecialChars.tolerance + if ( + (typeof forbidSpecialCharsTolerance !== 'number') || + isNaN(forbidSpecialCharsTolerance) + ) { + propertiesError['bot.forbidSpecialChars.tolerance'].push(ValidationErrorType.WrongType) + } else if ( + forbidSpecialCharsTolerance < 0 || + forbidSpecialCharsTolerance > forbidSpecialCharsMaxTolerance + ) { + propertiesError['bot.forbidSpecialChars.tolerance'].push(ValidationErrorType.NotInRange) + } + } + + if (botConf.noDuplicate.enabled) { + const noDuplicateDelay = channelConfigurationOptions.bot.noDuplicate.delay + if ( + (typeof noDuplicateDelay !== 'number') || + isNaN(noDuplicateDelay) + ) { + propertiesError['bot.noDuplicate.delay'].push(ValidationErrorType.WrongType) + } else if ( + noDuplicateDelay < 0 || + noDuplicateDelay > noDuplicateMaxDelay + ) { + propertiesError['bot.noDuplicate.delay'].push(ValidationErrorType.NotInRange) + } + } + for (const [i, fw] of botConf.forbiddenWords.entries()) { for (const v of fw.entries) { propertiesError[`bot.forbiddenWords.${i}.entries`] = [] @@ -146,7 +178,8 @@ export class ChannelDetailsService { } for (const channel of channels.data) { - channel.livechatConfigurationUri = '/p/livechat/configuration/channel?channelId=' + encodeURIComponent(channel.id) + channel.livechatConfigurationUri = + '/p/livechat/configuration/channel?channelId=' + encodeURIComponent(channel.id as string | number) // Note: since Peertube v6.0.0, channel.avatar is dropped, and we have to use channel.avatars. // So, if !channel.avatar, we will search a suitable one in channel.avatars, and fill channel.avatar. @@ -180,10 +213,11 @@ export class ChannelDetailsService { } public async fetchEmojisConfiguration (channelId: number): Promise { + const url = getBaseRoute(this._registerClientOptions) + + '/api/configuration/channel/emojis/' + + encodeURIComponent(channelId) const response = await fetch( - getBaseRoute(this._registerClientOptions) + - '/api/configuration/channel/emojis/' + - encodeURIComponent(channelId), + url, { method: 'GET', headers: this._headers @@ -295,10 +329,11 @@ export class ChannelDetailsService { channelId: number, channelEmojis: ChannelEmojis ): Promise { + const url = getBaseRoute(this._registerClientOptions) + + '/api/configuration/channel/emojis/' + + encodeURIComponent(channelId) const response = await fetch( - getBaseRoute(this._registerClientOptions) + - '/api/configuration/channel/emojis/' + - encodeURIComponent(channelId), + url, { method: 'POST', headers: this._headers, @@ -312,4 +347,24 @@ export class ChannelDetailsService { return response.json() } + + public async enableEmojisOnlyModeOnAllRooms (channelId: number): Promise { + const url = getBaseRoute(this._registerClientOptions) + + '/api/configuration/channel/emojis/' + + encodeURIComponent(channelId) + + '/enable_emoji_only' + const response = await fetch( + url, + { + method: 'POST', + headers: this._headers + } + ) + + if (!response.ok) { + throw new Error('Can\'t enable Emojis Only Mode on all rooms.') + } + + return response.json() + } } diff --git a/client/common/lib/buttons.ts b/client/common/lib/buttons.ts index 0cf9e11d..a51e8dff 100644 --- a/client/common/lib/buttons.ts +++ b/client/common/lib/buttons.ts @@ -4,7 +4,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // This content comes from the file assets/images/plus-square.svg, from the Feather icons set https://feathericons.com/ -export const AddSVG: string = +export const AddSVG = `Testing...' ul.append(waiting) if ((typeof result.next) === 'function') { + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type const r: Result = (result.next as Function)() waiting.remove() await machine(r) diff --git a/client/utils/colors.ts b/client/utils/colors.ts index c6ba2b6f..f8024f33 100644 --- a/client/utils/colors.ts +++ b/client/utils/colors.ts @@ -24,18 +24,41 @@ function computeAutoColors (): AutoColors | null { const buttonStyles = window.getComputedStyle(button) const autocolors: AutoColors = { - mainForeground: styles.getPropertyValue('--mainForegroundColor').trim(), - mainBackground: styles.getPropertyValue('--mainBackgroundColor').trim(), - greyForeground: styles.getPropertyValue('--greyForegroundColor').trim(), - greyBackground: styles.getPropertyValue('--greyBackgroundColor').trim(), - menuForeground: styles.getPropertyValue('--menuForegroundColor').trim(), - menuBackground: styles.getPropertyValue('--menuBackgroundColor').trim(), - inputForeground: styles.getPropertyValue('--inputForegroundColor').trim(), - inputBackground: styles.getPropertyValue('--inputBackgroundColor').trim(), - buttonForeground: buttonStyles.color.trim(), - buttonBackground: styles.getPropertyValue('--mainColor').trim(), - link: styles.getPropertyValue('--mainForegroundColor').trim(), - linkHover: styles.getPropertyValue('--mainForegroundColor').trim() + mainForeground: styles.getPropertyValue('--fg').trim() || + styles.getPropertyValue('--mainForegroundColor').trim(), + + mainBackground: styles.getPropertyValue('--bg').trim() || + styles.getPropertyValue('--mainBackgroundColor').trim(), + + greyForeground: styles.getPropertyValue('--fg-300').trim() || + styles.getPropertyValue('--greyForegroundColor').trim(), + + greyBackground: styles.getPropertyValue('--bg-secondary-300').trim() || + styles.getPropertyValue('--greyBackgroundColor').trim(), + + menuForeground: styles.getPropertyValue('--fg').trim() || + styles.getPropertyValue('--menuForegroundColor').trim(), + + menuBackground: styles.getPropertyValue('--bg-secondary-400').trim() || + styles.getPropertyValue('--menuBackgroundColor').trim(), + + inputForeground: styles.getPropertyValue('--input-fg').trim() || + styles.getPropertyValue('--inputForegroundColor').trim(), + + inputBackground: styles.getPropertyValue('--input-bg').trim() || + styles.getPropertyValue('--inputBackgroundColor').trim(), + + buttonForeground: styles.getPropertyValue('--on-primary').trim() || + buttonStyles.color.trim(), + + buttonBackground: styles.getPropertyValue('--primary').trim() || + styles.getPropertyValue('--mainColor').trim(), + + link: styles.getPropertyValue('--fg').trim() || + styles.getPropertyValue('--mainForegroundColor').trim(), + + linkHover: styles.getPropertyValue('--fg-400').trim() || + styles.getPropertyValue('--mainForegroundColor').trim() } const autoColorsTest = areAutoColorsValid(autocolors) if (autoColorsTest !== true) { diff --git a/client/utils/conversejs.ts b/client/utils/conversejs.ts index 758e14ee..de7ca7d6 100644 --- a/client/utils/conversejs.ts +++ b/client/utils/conversejs.ts @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2024 John Livingston // // SPDX-License-Identifier: AGPL-3.0-only +/* eslint-disable @typescript-eslint/no-unsafe-function-type */ import type { RegisterClientOptions } from '@peertube/peertube-types/client' import type { InitConverseJSParams, ChatPeertubeIncludeMode } from 'shared/lib/types' @@ -17,7 +18,7 @@ declare global { } } -let pollListenerInitiliazed: boolean = false +let pollListenerInitiliazed = false /** * load the ConverseJS CSS. @@ -152,10 +153,11 @@ async function displayConverseJS ( const authHeader = peertubeHelpers.getAuthHeader() + const url = getBaseRoute(clientOptions) + '/api/configuration/room/' + + encodeURIComponent(roomKey) + + (forceType ? '?forcetype=1' : '') const response = await fetch( - getBaseRoute(clientOptions) + '/api/configuration/room/' + - encodeURIComponent(roomKey) + - (forceType ? '?forcetype=1' : ''), + url, { method: 'GET', headers: authHeader diff --git a/client/utils/uri.ts b/client/utils/uri.ts index 600352ec..3def4c54 100644 --- a/client/utils/uri.ts +++ b/client/utils/uri.ts @@ -4,7 +4,7 @@ import type { RegisterClientOptions } from '@peertube/peertube-types/client' -function getBaseRoute ({ peertubeHelpers }: RegisterClientOptions, permanent: boolean = false): string { +function getBaseRoute ({ peertubeHelpers }: RegisterClientOptions, permanent = false): string { if (permanent) { return '/plugins/livechat/router' } diff --git a/conversejs/.eslintrc.json b/conversejs/.eslintrc.json deleted file mode 100644 index bd9288c4..00000000 --- a/conversejs/.eslintrc.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "standard-with-typescript" - ], - "globals": {}, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2018, - "project": [ - "./conversejs/tsconfig.json" - ] - }, - "plugins": [ - "@typescript-eslint" - ], - "ignorePatterns": [], - "rules": { - "@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_"}], - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/strict-boolean-expressions": "off", - "@typescript-eslint/return-await": [2, "in-try-catch"], // FIXME: correct? - "@typescript-eslint/no-invalid-void-type": "off", - "@typescript-eslint/triple-slash-reference": "off", - "max-len": [ - "error", - { - "code": 120, - "comments": 120 - } - ], - "no-unused-vars": "off" -} -} diff --git a/conversejs/.eslintrc.json.license b/conversejs/.eslintrc.json.license deleted file mode 100644 index b253ad42..00000000 --- a/conversejs/.eslintrc.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2024 John Livingston - -SPDX-License-Identifier: AGPL-3.0-only diff --git a/conversejs/build-conversejs-patch-i18n.js b/conversejs/build-conversejs-patch-i18n.js index ea87d7c3..7eff43d0 100644 --- a/conversejs/build-conversejs-patch-i18n.js +++ b/conversejs/build-conversejs-patch-i18n.js @@ -4,6 +4,7 @@ // // SPDX-License-Identifier: AGPL-3.0-only +/* eslint-disable @typescript-eslint/no-require-imports */ const fs = require('node:fs') const path = require('node:path') const YAML = require('yaml') diff --git a/conversejs/build-conversejs.sh b/conversejs/build-conversejs.sh index c1078d16..9bdd36e3 100644 --- a/conversejs/build-conversejs.sh +++ b/conversejs/build-conversejs.sh @@ -18,8 +18,10 @@ set -x CONVERSE_VERSION="v11.0.0" CONVERSE_REPO="https://github.com/conversejs/converse.js.git" # You can eventually set CONVERSE_COMMIT to a specific commit ID, if you want to apply some patches. -# 2024-09-02: using Converse upstream (v11 WIP). -CONVERSE_COMMIT="9952046d580bc2930e29833f4c9987a3d4c95bc2" +# 2024-09-17: using Converse upstream (v11 WIP). +CONVERSE_COMMIT="07dc6f4f5da5890b02a46a8a2f2d0498649786bc" +# 2024-12-03: using Converse upstream (v11 WIP). +CONVERSE_COMMIT="8f32df723e3aa392db02326dc6a3279c9497b6fb" # It is possible to use another repository, if we want some customization that are not upstream (yet): # CONVERSE_VERSION="livechat" @@ -29,8 +31,8 @@ CONVERSE_COMMIT="9952046d580bc2930e29833f4c9987a3d4c95bc2" # 2024-09-03: include badges short label and quick fix for sendMessage button CONVERSE_REPO="https://github.com/JohnXLivingston/converse.js" -CONVERSE_VERSION="livechat-11.0.1" -CONVERSE_COMMIT="" +CONVERSE_VERSION="livechat-12.0.0" +# CONVERSE_COMMIT="" rootdir="$(pwd)" src_dir="$rootdir/conversejs" @@ -40,6 +42,7 @@ if [ -n "$CONVERSE_COMMIT" ]; then fi converse_build_dir="$rootdir/build/conversejs" converse_destination_dir="$rootdir/dist/client/conversejs" +converse_emoji_destination="$rootdir/dist/converse-emoji.json" if [[ ! -d $src_dir ]]; then echo "$0 must be called from the plugin livechat root dir." @@ -119,6 +122,9 @@ cd $rootdir echo "Copying ConverseJS dist files..." mkdir -p "$converse_destination_dir" && cp -r $converse_build_dir/dist/* "$converse_destination_dir/" +echo "Copying ConverseJS original emoji.json file..." # this is needed for some backend code. +cp "$converse_build_dir/src/headless/plugins/emoji/emoji.json" "$converse_emoji_destination" + echo "ConverseJS OK." exit 0 diff --git a/conversejs/builtin.ts b/conversejs/builtin.ts index 9cb1cc5a..08b490c5 100644 --- a/conversejs/builtin.ts +++ b/conversejs/builtin.ts @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: AGPL-3.0-only +/* eslint-disable @typescript-eslint/no-unsafe-function-type */ + import type { InitConverseJSParams, ChatIncludeMode, ExternalAuthResult } from 'shared/lib/types' import { inIframe } from './lib/utils' import { initDom } from './lib/dom' @@ -21,6 +23,7 @@ import { livechatViewerModePlugin } from './lib/plugins/livechat-viewer-mode' import { livechatMiniMucHeadPlugin } from './lib/plugins/livechat-mini-muc-head' import { livechatEmojisPlugin } from './lib/plugins/livechat-emojis' import { moderationDelayPlugin } from './lib/plugins/moderation-delay' +import { livechatAnnouncementsPlugin } from './lib/plugins/livechat-announcements' declare global { interface Window { @@ -35,11 +38,17 @@ declare global { html: Function sizzle: Function dayjs: Function + __: Function + u: { + hasClass: Function + addClass: Function + removeClass: Function + } } } initConversePlugins: typeof initConversePlugins initConverse: typeof initConverse - reconnectConverse?: (room: string) => void + reconnectConverse?: (params: any) => void externalAuthGetResult?: (data: ExternalAuthResult) => void } } @@ -74,6 +83,8 @@ function initConversePlugins (peertubeEmbedded: boolean): void { converse.plugins.add('livechatViewerModePlugin', livechatViewerModePlugin) converse.plugins.add('converse-moderation-delay', moderationDelayPlugin) + + converse.plugins.add('livechatAnnouncementsPlugin', livechatAnnouncementsPlugin) } window.initConversePlugins = initConversePlugins @@ -86,7 +97,7 @@ window.initConversePlugins = initConversePlugins async function initConverse ( initConverseParams: InitConverseJSParams, chatIncludeMode: ChatIncludeMode = 'chat-only', - peertubeAuthHeader?: { [header: string]: string } | null + peertubeAuthHeader?: Record | null ): Promise { // First, fixing relative websocket urls. if (initConverseParams.localWebsocketServiceUrl?.startsWith('/')) { @@ -121,9 +132,9 @@ async function initConverse ( params.view_mode = chatIncludeMode === 'chat-only' ? 'fullscreen' : 'embedded' params.allow_url_history_change = chatIncludeMode === 'chat-only' - let isAuthenticated: boolean = false - let isAuthenticatedWithExternalAccount: boolean = false - let isRemoteWithNicknameSet: boolean = false + let isAuthenticated = false + let isAuthenticatedWithExternalAccount = false + let isRemoteWithNicknameSet = false // OIDC (OpenID Connect): const tryOIDC = (initConverseParams.externalAuthOIDC?.length ?? 0) > 0 diff --git a/conversejs/custom/index.js b/conversejs/custom/index.js index fdc969e9..1e54d2a7 100644 --- a/conversejs/custom/index.js +++ b/conversejs/custom/index.js @@ -66,6 +66,7 @@ CORE_PLUGINS.push('livechat-converse-mam-search') // We must also add our custom ROOM_FEATURES, so that they correctly resets // (see headless/plugins/muc, getDiscoInfoFeatures, which loops on this const) ROOM_FEATURES.push('x_peertubelivechat_mute_anonymous') +ROOM_FEATURES.push('x_peertubelivechat_emoji_only_mode') _converse.exports.CustomElement = CustomElement diff --git a/conversejs/custom/plugins/mam-search/templates/muc-mam-search-app.js b/conversejs/custom/plugins/mam-search/templates/muc-mam-search-app.js index 8e3a9e10..2182f7ad 100644 --- a/conversejs/custom/plugins/mam-search/templates/muc-mam-search-app.js +++ b/conversejs/custom/plugins/mam-search/templates/muc-mam-search-app.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { converseLocalizedHelpUrl } from '../../../shared/lib/help' import { tplMUCApp } from '../../../shared/components/muc-app/templates/muc-app.js' import { html } from 'lit' diff --git a/conversejs/custom/plugins/mam-search/templates/muc-mam-search-message.js b/conversejs/custom/plugins/mam-search/templates/muc-mam-search-message.js index 5c9596c1..d345ea8a 100644 --- a/conversejs/custom/plugins/mam-search/templates/muc-mam-search-message.js +++ b/conversejs/custom/plugins/mam-search/templates/muc-mam-search-message.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' /** diff --git a/conversejs/custom/plugins/mam-search/templates/muc-mam-search-occupant.js b/conversejs/custom/plugins/mam-search/templates/muc-mam-search-occupant.js index 51c5ef35..6d9553a9 100644 --- a/conversejs/custom/plugins/mam-search/templates/muc-mam-search-occupant.js +++ b/conversejs/custom/plugins/mam-search/templates/muc-mam-search-occupant.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { api } from '@converse/headless' import { getAuthorStyle } from '../../../../src/utils/color.js' diff --git a/conversejs/custom/plugins/notes/templates/muc-note-app.js b/conversejs/custom/plugins/notes/templates/muc-note-app.js index e63f6e24..3ce7c093 100644 --- a/conversejs/custom/plugins/notes/templates/muc-note-app.js +++ b/conversejs/custom/plugins/notes/templates/muc-note-app.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { converseLocalizedHelpUrl } from '../../../shared/lib/help' import { tplMUCApp } from '../../../shared/components/muc-app/templates/muc-app.js' import { html } from 'lit' diff --git a/conversejs/custom/plugins/notes/templates/muc-note-occupant.js b/conversejs/custom/plugins/notes/templates/muc-note-occupant.js index 72c50ff3..8dd28894 100644 --- a/conversejs/custom/plugins/notes/templates/muc-note-occupant.js +++ b/conversejs/custom/plugins/notes/templates/muc-note-occupant.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { api } from '@converse/headless' import { getAuthorStyle } from '../../../../src/utils/color.js' diff --git a/conversejs/custom/plugins/notes/templates/muc-note.js b/conversejs/custom/plugins/notes/templates/muc-note.js index 16815e20..d900d442 100644 --- a/conversejs/custom/plugins/notes/templates/muc-note.js +++ b/conversejs/custom/plugins/notes/templates/muc-note.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { api } from '@converse/headless' import { html } from 'lit' import { __ } from 'i18n' diff --git a/conversejs/custom/plugins/notes/templates/muc-notes.js b/conversejs/custom/plugins/notes/templates/muc-notes.js index e488dea2..0e31d255 100644 --- a/conversejs/custom/plugins/notes/templates/muc-notes.js +++ b/conversejs/custom/plugins/notes/templates/muc-notes.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { repeat } from 'lit/directives/repeat.js' import { __ } from 'i18n' diff --git a/conversejs/custom/plugins/poll/modals/poll-form.js b/conversejs/custom/plugins/poll/modals/poll-form.js index d9746289..fc3fc0d9 100644 --- a/conversejs/custom/plugins/poll/modals/poll-form.js +++ b/conversejs/custom/plugins/poll/modals/poll-form.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { __ } from 'i18n' import BaseModal from 'plugins/modal/modal.js' import { api } from '@converse/headless' diff --git a/conversejs/custom/plugins/poll/templates/poll-form.js b/conversejs/custom/plugins/poll/templates/poll-form.js index 1009b254..d26d2629 100644 --- a/conversejs/custom/plugins/poll/templates/poll-form.js +++ b/conversejs/custom/plugins/poll/templates/poll-form.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { converseLocalizedHelpUrl } from '../../../shared/lib/help' import { html } from 'lit' import { __ } from 'i18n' diff --git a/conversejs/custom/plugins/poll/templates/poll.js b/conversejs/custom/plugins/poll/templates/poll.js index 152a0f32..d205eb70 100644 --- a/conversejs/custom/plugins/poll/templates/poll.js +++ b/conversejs/custom/plugins/poll/templates/poll.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { repeat } from 'lit/directives/repeat.js' import { __ } from 'i18n' diff --git a/conversejs/custom/plugins/tasks/modals/templates/pick-task-list.js b/conversejs/custom/plugins/tasks/modals/templates/pick-task-list.js index d872ae16..932c3083 100644 --- a/conversejs/custom/plugins/tasks/modals/templates/pick-task-list.js +++ b/conversejs/custom/plugins/tasks/modals/templates/pick-task-list.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { repeat } from 'lit/directives/repeat.js' import { __ } from 'i18n' diff --git a/conversejs/custom/plugins/tasks/templates/muc-task-app.js b/conversejs/custom/plugins/tasks/templates/muc-task-app.js index aeaf68e9..dde6a53d 100644 --- a/conversejs/custom/plugins/tasks/templates/muc-task-app.js +++ b/conversejs/custom/plugins/tasks/templates/muc-task-app.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { converseLocalizedHelpUrl } from '../../../shared/lib/help' import { tplMUCApp } from '../../../shared/components/muc-app/templates/muc-app.js' import { html } from 'lit' diff --git a/conversejs/custom/plugins/tasks/templates/muc-task-list.js b/conversejs/custom/plugins/tasks/templates/muc-task-list.js index 0de8494e..88c1a950 100644 --- a/conversejs/custom/plugins/tasks/templates/muc-task-list.js +++ b/conversejs/custom/plugins/tasks/templates/muc-task-list.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { repeat } from 'lit/directives/repeat.js' import { __ } from 'i18n' diff --git a/conversejs/custom/plugins/tasks/templates/muc-task-lists.js b/conversejs/custom/plugins/tasks/templates/muc-task-lists.js index d875f4c1..efb02185 100644 --- a/conversejs/custom/plugins/tasks/templates/muc-task-lists.js +++ b/conversejs/custom/plugins/tasks/templates/muc-task-lists.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { repeat } from 'lit/directives/repeat.js' import { __ } from 'i18n' diff --git a/conversejs/custom/plugins/tasks/templates/muc-task.js b/conversejs/custom/plugins/tasks/templates/muc-task.js index e003341a..7c8d02da 100644 --- a/conversejs/custom/plugins/tasks/templates/muc-task.js +++ b/conversejs/custom/plugins/tasks/templates/muc-task.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { __ } from 'i18n' @@ -20,7 +23,8 @@ export function tplMucTask (el, task) { type="checkbox" class="form-check-input" .checked=${done === true} - @click=${(_ev) => { + @click=${(ev) => { + ev?.preventDefault() task.set('done', !done) task.saveItem() }} diff --git a/conversejs/custom/plugins/terms/components/muc-terms.js b/conversejs/custom/plugins/terms/components/muc-terms.js index b133e64b..ee7d2468 100644 --- a/conversejs/custom/plugins/terms/components/muc-terms.js +++ b/conversejs/custom/plugins/terms/components/muc-terms.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { CustomElement } from 'shared/components/element.js' import { api } from '@converse/headless' import { html } from 'lit' diff --git a/conversejs/custom/shared/styles/_announcements.scss b/conversejs/custom/shared/styles/_announcements.scss new file mode 100644 index 00000000..deeddd5c --- /dev/null +++ b/conversejs/custom/shared/styles/_announcements.scss @@ -0,0 +1,59 @@ +/* + * SPDX-FileCopyrightText: 2024 John Livingston + * + * SPDX-License-Identifier: AGPL-3.0-only + */ + +// FIXME: this should be with the livechat-announcement plugin. +// But for now, there is no way to build scss from there. + +#conversejs { + .message.chat-msg { + &.livechat-announcement { + --livechat-announcement-color: #000; + --livechat-announcement-background-color: #dbf2d8; + --livechat-announcement-border-color: #2ab218; + } + + &.livechat-highlight { + --livechat-announcement-color: #000; + --livechat-announcement-background-color: #dce8fa; + --livechat-announcement-border-color: #3075e5; + } + + &.livechat-warning { + --livechat-announcement-color: #000; + --livechat-announcement-background-color: #fadede; + --livechat-announcement-border-color: #e03e3e; + } + + &.livechat-announcement, + &.livechat-highlight, + &.livechat-warning { + converse-chat-message-body { + border: 2px solid var(--livechat-announcement-border-color); + color: var(--livechat-announcement-color); + background-color: var(--livechat-announcement-background-color); + min-width: 50%; + padding: 1em; + } + } + } + + .livechat-announcements-form { + label { + // only for screen readers + border: 0 !important; + clip: rect(1px, 1px, 1px, 1px) !important; + /* stylelint-disable-next-line property-no-vendor-prefix */ + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + height: 1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + white-space: nowrap !important; + } + } +} diff --git a/conversejs/custom/shared/styles/_peertubetheme.scss b/conversejs/custom/shared/styles/_peertubetheme.scss index 6ac3f33d..7b936587 100644 --- a/conversejs/custom/shared/styles/_peertubetheme.scss +++ b/conversejs/custom/shared/styles/_peertubetheme.scss @@ -35,6 +35,14 @@ } } + // Emoji only info box + .livechat-emoji-only-info-box { + border: 1px dashed var(--peertube-menu-background); + color: var(--peertube-main-foreground); + background-color: var(--peertube-main-background); + margin: 0 5px; + } + converse-chat-toolbar { border-top: none !important; // removing border, to avoid confusing the toolbar with an input field. color: var(--peertube-main-foreground); @@ -43,6 +51,10 @@ // Fixing emoji colors for some emoji like «motorcycle» converse-emoji-picker { + // Must set display block. Without this, Converse defined max-width will not apply. + // Don't really know why it is working in pure ConverseJs and not in livechat. + display: block; + .emoji-picker { .insert-emoji { a { @@ -52,13 +64,17 @@ } .emoji-picker__header { - color: var(--peertube-main-background); - background-color: var(--peertube-main-foreground); + background-color: var(--peertube-main-background); + color: var(--peertube-main-foreground); + + .emoji-search { + color: currentcolor; + } ul { .emoji-category { - color: var(--peertube-main-background); - background-color: var(--peertube-main-foreground); + background-color: var(--peertube-main-background); + color: var(--peertube-main-foreground); a { color: currentcolor; @@ -190,7 +206,7 @@ } // Bigger occupants sidebar when width is not big enough. - @media screen and (max-width: 576px) { + @media screen and (width <= 576px) { .chatroom .box-flyout .chatroom-body .occupants { min-width: 50%; } diff --git a/conversejs/custom/shared/styles/livechat.scss b/conversejs/custom/shared/styles/livechat.scss index 1ae46aaf..f5b5fbc5 100644 --- a/conversejs/custom/shared/styles/livechat.scss +++ b/conversejs/custom/shared/styles/livechat.scss @@ -7,6 +7,7 @@ @import "./variables"; @import "shared/styles/index"; @import "./peertubetheme"; +@import "./announcements"; body.livechat-iframe { #conversejs .chat-head { @@ -21,7 +22,7 @@ body.livechat-iframe { } #conversejs .livechat-mini-muc-bar-buttons { - a.orange-button { + a.primary-button { // force these colors... color: var(--peertube-button-foreground); background-color: var(--peertube-button-background); @@ -202,6 +203,7 @@ body.converse-embedded { // This margin-left trick is to align the button on the right. margin-left: auto !important; order: 99; + white-space: nowrap; } } } @@ -229,3 +231,27 @@ body.converse-embedded { } } } + +// When livechat has not many height, must reduce the emoji picker height. +/* stylelint-disable-next-line no-duplicate-selectors */ +#conversejs { + &[livechat-converse-root-height="small"] { + converse-emoji-picker { + converse-emoji-picker-content { + .emoji-picker__lists { + height: 2em; + } + } + } + } + + &[livechat-converse-root-height="medium"] { + converse-emoji-picker { + converse-emoji-picker-content { + .emoji-picker__lists { + height: 4em; + } + } + } + } +} diff --git a/conversejs/custom/templates/livechat-external-login-modal.js b/conversejs/custom/templates/livechat-external-login-modal.js index 0bba91de..a9c4f565 100644 --- a/conversejs/custom/templates/livechat-external-login-modal.js +++ b/conversejs/custom/templates/livechat-external-login-modal.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { _converse, api } from '@converse/headless' import { __ } from 'i18n' import { html } from 'lit' @@ -28,8 +31,9 @@ function externalLoginClickHandler (ev, el, externalAuthOIDCUrl) { console.log('Received an external authentication result...', data) if (!data.ok) { - // eslint-disable-next-line no-undef - el.external_auth_oidc_alert_message = __(LOC_login_external_auth_alert_message) + + el.external_auth_oidc_alert_message = + // eslint-disable-next-line no-undef + __(LOC_login_external_auth_alert_message) + (data.message ? ` (${data.message})` : '') return } diff --git a/conversejs/custom/templates/muc-bottom-panel.js b/conversejs/custom/templates/muc-bottom-panel.js index 91b12bb4..87c07f98 100644 --- a/conversejs/custom/templates/muc-bottom-panel.js +++ b/conversejs/custom/templates/muc-bottom-panel.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { __ } from 'i18n' import { _converse, api } from '@converse/headless' import { html } from 'lit' @@ -83,6 +86,20 @@ const tplSlowMode = (o) => { return html`` } +const tplEmojiOnly = (o) => { + if (!o.can_post) { return html`` } + if (!o.model.features?.get?.('x_peertubelivechat_emoji_only_mode')) { + return '' + } + return html`
+ + ${ + // eslint-disable-next-line no-undef + __(LOC_emoji_only_info) + } +
` +} + const tplViewerMode = (o) => { if (!api.settings.get('livechat_enable_viewer_mode')) { return html`` @@ -145,6 +162,7 @@ export default (o) => { return html` ${tplViewerMode(o)} ${tplSlowMode(o)} + ${tplEmojiOnly(o)} ${ mutedAnonymousMessage ? html`${mutedAnonymousMessage}` diff --git a/conversejs/custom/templates/muc-chatarea.js b/conversejs/custom/templates/muc-chatarea.js index d2067c4e..88eab651 100644 --- a/conversejs/custom/templates/muc-chatarea.js +++ b/conversejs/custom/templates/muc-chatarea.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { api } from '@converse/headless' import tplMUCChatarea from '../../src/plugins/muc-views/templates/muc-chatarea.js' import { html } from 'lit' diff --git a/conversejs/custom/templates/muc-head.js b/conversejs/custom/templates/muc-head.js index ebd1ef7a..ed6849b6 100644 --- a/conversejs/custom/templates/muc-head.js +++ b/conversejs/custom/templates/muc-head.js @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + import { html } from 'lit' import { api } from '@converse/headless' import { until } from 'lit/directives/until.js' diff --git a/conversejs/custom/templates/muc.js b/conversejs/custom/templates/muc.js index d3da4caf..3dfebd51 100644 --- a/conversejs/custom/templates/muc.js +++ b/conversejs/custom/templates/muc.js @@ -4,6 +4,9 @@ // SPDX-License-Identifier: MPL-2.0 // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + // Must import the original muc.js, because it imports some custom elements files. import '../../src/plugins/muc-views/templates/muc.js' import { getChatRoomBodyTemplate } from '../../src/plugins/muc-views/utils.js' diff --git a/conversejs/lib/@types/global.d.ts b/conversejs/lib/@types/global.d.ts new file mode 100644 index 00000000..4c24d9e1 --- /dev/null +++ b/conversejs/lib/@types/global.d.ts @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2024 John Livingston +// +// SPDX-License-Identifier: AGPL-3.0-only + +// Important note: loc segments that are declared here must also be in loc.keys.js (for now). + +declare const LOC_ANNOUNCEMENTS_MESSAGE_TYPE: string +declare const LOC_ANNOUNCEMENTS_MESSAGE_TYPE_STANDARD: string +declare const LOC_ANNOUNCEMENTS_MESSAGE_TYPE_ANNOUNCEMENT: string +declare const LOC_ANNOUNCEMENTS_MESSAGE_TYPE_HIGHLIGHT: string +declare const LOC_ANNOUNCEMENTS_MESSAGE_TYPE_WARNING: string diff --git a/conversejs/lib/auth.ts b/conversejs/lib/auth.ts index bbe1d1ec..b2ffac70 100644 --- a/conversejs/lib/auth.ts +++ b/conversejs/lib/auth.ts @@ -4,7 +4,7 @@ import type { ProsodyAuthentInfos } from 'shared/lib/types' -interface AuthHeader { [key: string]: string } +type AuthHeader = Record async function getLocalAuthentInfos ( authenticationUrl: string, @@ -66,7 +66,7 @@ async function getLocalAuthentInfos ( { 'content-type': 'application/json;charset=UTF-8' } - ) + ) as HeadersInit ) }) @@ -104,7 +104,7 @@ async function getLocalAuthentInfos ( function getLivechatTokenAuthInfos (): ProsodyAuthentInfos | undefined { try { const hash = window.location.hash - if (!hash || !hash.startsWith('#?')) { return undefined } + if (!hash?.startsWith('#?')) { return undefined } // We try to read the hash as a queryString. const u = new URL('http://localhost' + hash.substring(1)) const jid = u.searchParams.get('j') diff --git a/conversejs/lib/converse-params.ts b/conversejs/lib/converse-params.ts index cbf28ed8..e1c9927a 100644 --- a/conversejs/lib/converse-params.ts +++ b/conversejs/lib/converse-params.ts @@ -86,7 +86,8 @@ function defaultConverseParams ( 'livechatDisconnectOnUnloadPlugin', 'converse-slow-mode', 'livechatEmojis', - 'converse-moderation-delay' + 'converse-moderation-delay', + 'livechatAnnouncementsPlugin' ], show_retraction_warning: false, // No need to use this warning (except if we open to external clients?) muc_show_info_messages: mucShowInfoMessages, diff --git a/conversejs/lib/plugins/livechat-announcements.ts b/conversejs/lib/plugins/livechat-announcements.ts new file mode 100644 index 00000000..0f66f045 --- /dev/null +++ b/conversejs/lib/plugins/livechat-announcements.ts @@ -0,0 +1,249 @@ +// SPDX-FileCopyrightText: 2024 John Livingston +// +// SPDX-License-Identifier: AGPL-3.0-only + +interface Current { + announcementType: string | undefined +} + +/** + * livechat announcements ConverseJS plugin: + * with this plugin, moderators can send highlighted/announcements messages. + * + * Moderators will have a special select field in the chat toolbar, so that they can choose a messaging style. + * These special messages will have a first line with a generated title (for XMPP compatibility). + * They will also have a special attribute on the body tag. + * This attribute will be used to apply some CSS with this plugin. + */ +export const livechatAnnouncementsPlugin = { + dependencies: ['converse-muc', 'converse-muc-views'], + initialize: function (this: any) { + const _converse = this._converse + + // This is a closure variable, to get the current form status when sending a message. + const current: Current = { + announcementType: undefined + } + + overrideMUCMessageForm(_converse, current) + + _converse.api.listen.on('getToolbarButtons', getToolbarButtons.bind(this)) + + _converse.api.listen.on('chatRoomInitialized', (muc: any) => onAffiliationChange(_converse, muc)) + + _converse.api.listen.on('getOutgoingMessageAttributes', (chatbox: any, attrs: any) => { + return onGetOutgoingMessageAttributes(current, _converse, chatbox, attrs) + }) + + _converse.api.listen.on('createMessageStanza', createMessageStanza) + + _converse.api.listen.on('parseMUCMessage', parseMUCMessage) + + overrideMessage(_converse) + } +} + +/** + * Overloads the MUCMessageForm to handle the announcement type field (if present) when sending a message. + * + * Also hides the announcement type field if we are correcting a previous message. + */ +function overrideMUCMessageForm (_converse: any, current: Current): void { + const MUCMessageForm = _converse.api.elements.registry['converse-muc-message-form'] + if (MUCMessageForm) { + class MUCMessageFormloaded extends MUCMessageForm { + async onFormSubmitted (ev?: Event): Promise { + const announcementSelect = this.querySelector('[name=livechat-announcements]') + current.announcementType = announcementSelect?.selectedOptions?.[0]?.value || undefined + try { + await super.onFormSubmitted(ev) + if (announcementSelect) { announcementSelect.selectedIndex = 0 } // set back to default + } catch (err) { + console.log(err) + } + current.announcementType = undefined + } + + insertIntoTextArea (...args: any[]): void { + super.insertIntoTextArea(...args) + try { + // FIXME: doing this here is not very clean. + // But that's how ConverseJS adds or removes the 'correction' class to the textarea. + const textarea = this.querySelector('.chat-textarea') + if (!textarea) { return } + const correcting = window.converse.env.u.hasClass('correcting', textarea) + const announcementForm = this.querySelector('.livechat-announcements-form') + const announcementSelect = this.querySelector('[name=livechat-announcements]') + if (correcting) { + if (announcementSelect) { announcementSelect.selectedIndex = 0 } + if (announcementForm) { announcementForm.style.display = 'none' } + } else { + if (announcementForm) { announcementForm.style.display = 'block' } + } + } catch (err) { + console.error(err) + } + } + } + _converse.api.elements.define('converse-muc-message-form', MUCMessageFormloaded) + } +} + +/** + * Adds the announcement selector in the toolbar for owner/admin. + * @param this the plugin + * @param toolbarEl the toolbar element + * @param buttons the button list + * @returns the updated "button" list + */ +function getToolbarButtons (this: any, toolbarEl: any, buttons: any[]): Parameters[1] { + const _converse = this._converse + const mucModel = toolbarEl.model + if (!toolbarEl.is_groupchat) { + return buttons + } + const myself = mucModel.getOwnOccupant() + if (!myself || !['admin', 'owner'].includes(myself.get('affiliation') as string)) { + return buttons + } + + const { __ } = _converse + const { html } = window.converse.env + + const i18n = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE) + const i18nStandard = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_STANDARD) + const i18nAnnouncement = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_ANNOUNCEMENT) + const i18nHighlight = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_HIGHLIGHT) + const i18nWarning = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_WARNING) + + const select = html` + + + ` + + if (_converse.api.settings.get('visible_toolbar_buttons').emoji) { + // Emojis should be the first entry, so adding select in second place. + buttons = [ + buttons.shift(), + select, + ...buttons + ] + } else { + // Adding the select in first place. + buttons.unshift(select) + } + return buttons +} + +/** + * Refreshed the toolbar when current user affiliation changes. + * @param _converse _converse object + * @param muc the current muc + */ +function onAffiliationChange (_converse: any, muc: any): void { + muc.occupants.on('change:affiliation', (occupant: any) => { + if (occupant.get('jid') !== _converse.bare_jid) { // only for myself + return + } + document.querySelectorAll('converse-chat-toolbar').forEach(e => (e as any).requestUpdate?.()) + }) +} + +/** + * For outgoing message, adding the announcement type if there is a current one. + * @param current current object + * @param _converse _converse object + * @param chatbox the chatbox + * @param attrs message attributes + * @returns + */ +function onGetOutgoingMessageAttributes ( + current: Current, + _converse: any, + chatbox: any, + attrs: any +): Parameters[3] { + if (!current.announcementType) { return attrs } + + const { __ } = _converse + attrs.livechat_announcement_type = current.announcementType + if (current.announcementType === 'announcement') { + attrs.body = '* ' + __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_ANNOUNCEMENT) + ' * \n' + attrs.body + } else if (current.announcementType === 'warning') { + attrs.body = '* ' + __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_WARNING) + ' *\n' + attrs.body + } + return attrs +} + +/** + * Outgoing messages: adding an attribute on body for announcements. + * @param chat + * @param data + */ +async function createMessageStanza ( + chat: any, + data: any +): Promise[1]> { + const { message, stanza } = data + const announcementType = message.get('livechat_announcement_type') + if (!announcementType) { + return data + } + + stanza.tree().querySelector('message body')?.setAttribute('x-livechat-announcement-type', announcementType) + return data +} + +/** + * Incoming messages: checking if there is an announcement attribute, and adding it in computed attributes. + * @param stanza + * @param attrs + */ +function parseMUCMessage (stanza: any, attrs: any): Parameters[1] { + const { sizzle } = window.converse.env + const body = sizzle('message body', stanza)?.[0] + if (!body) { return attrs } + + const announcementType = body.getAttribute('x-livechat-announcement-type') + if (!announcementType) { return attrs } + + // Note: we don't check the value here. Will be done in getExtraMessageClasses. + // Moreover, the backend server will ensure that only admins/owners can send this attribute. + attrs.livechat_announcement_type = announcementType + return attrs +} + +/** + * Overloading the Message class to add CSS for announcements. + * @param _converse + */ +function overrideMessage (_converse: any): void { + const Message = _converse.api.elements.registry['converse-chat-message'] + if (Message) { + class MessageOverloaded extends Message { + getExtraMessageClasses (this: any): string { + // Adding CSS class if the message is an announcement. + let extraClasses = super.getExtraMessageClasses() ?? '' + const announcementType: string | undefined = this.model.get('livechat_announcement_type') + if (!announcementType) { + return extraClasses + } + if (['announcement', 'highlight', 'warning'].includes(announcementType)) { + extraClasses += ' livechat-' + announcementType + } + return extraClasses + } + } + _converse.api.elements.define('converse-chat-message', MessageOverloaded) + } +} diff --git a/conversejs/lib/plugins/livechat-emojis.ts b/conversejs/lib/plugins/livechat-emojis.ts index b1b8ab42..d108d40b 100644 --- a/conversejs/lib/plugins/livechat-emojis.ts +++ b/conversejs/lib/plugins/livechat-emojis.ts @@ -17,19 +17,19 @@ export const livechatEmojisPlugin = { livechat_custom_emojis_url: false }) - _converse.api.listen.on('loadEmojis', async (_context: Object, json: any) => { - const url = _converse.api.settings.get('livechat_custom_emojis_url') + _converse.api.listen.on('loadEmojis', async (_context: object, json: Record>) => { + const url = _converse.api.settings.get('livechat_custom_emojis_url') as string | undefined if (!url) { return json } - let customs + let customs: CustomEmojiDefinition[] | undefined try { customs = await loadCustomEmojis(url) } catch (err) { console.error(err) } - if (customs === undefined || !customs?.length) { + if (!customs?.length) { return json } @@ -51,7 +51,7 @@ export const livechatEmojisPlugin = { // We must also remove any existing emojis in category other than custom for (const type of Object.keys(json)) { - const v: {[key: string]: any} = json[type] + const v: Record = json[type] if (type !== 'custom' && type !== 'modifiers' && (def.sn in v)) { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete v[def.sn] diff --git a/conversejs/lib/plugins/livechat-specific.ts b/conversejs/lib/plugins/livechat-specific.ts index 6313564d..3f499a34 100644 --- a/conversejs/lib/plugins/livechat-specific.ts +++ b/conversejs/lib/plugins/livechat-specific.ts @@ -9,6 +9,7 @@ import { chatRoomOverrides } from './livechat-specific/chatroom' import { chatRoomMessageOverrides } from './livechat-specific/chatroom-message' import { customizeMessageAction } from './livechat-specific/message-action' import { customizeProfileModal } from './livechat-specific/profile' +import { customizeMUCBottomPanel } from './livechat-specific/muc-bottom-panel' export const livechatSpecificsPlugin = { dependencies: ['converse-muc', 'converse-muc-views'], @@ -26,6 +27,7 @@ export const livechatSpecificsPlugin = { customizeToolbar(this) customizeMessageAction(this) customizeProfileModal(this) + customizeMUCBottomPanel(this) _converse.api.listen.on('chatRoomViewInitialized', function (this: any, _model: any): void { // Remove the spinner if present... diff --git a/conversejs/lib/plugins/livechat-specific/chatroom-message.ts b/conversejs/lib/plugins/livechat-specific/chatroom-message.ts index c34ddff7..0dd5c49f 100644 --- a/conversejs/lib/plugins/livechat-specific/chatroom-message.ts +++ b/conversejs/lib/plugins/livechat-specific/chatroom-message.ts @@ -2,7 +2,8 @@ // // SPDX-License-Identifier: AGPL-3.0-only -export function chatRoomMessageOverrides (): {[key: string]: Function} { +// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type +export function chatRoomMessageOverrides (): Record { return { /* By default, ConverseJS groups messages from the same users for a 10 minutes period. * This make no sense in a livechat room. So we override isFollowup to ignore. */ diff --git a/conversejs/lib/plugins/livechat-specific/chatroom.ts b/conversejs/lib/plugins/livechat-specific/chatroom.ts index 297c0ed4..5a82a8fe 100644 --- a/conversejs/lib/plugins/livechat-specific/chatroom.ts +++ b/conversejs/lib/plugins/livechat-specific/chatroom.ts @@ -2,7 +2,8 @@ // // SPDX-License-Identifier: AGPL-3.0-only -export function chatRoomOverrides (): {[key: string]: Function} { +// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type +export function chatRoomOverrides (): Record { return { getActionInfoMessage: function getActionInfoMessage (this: any, code: string, nick: string, actor: any): any { if (code === '303') { @@ -27,8 +28,9 @@ export function chatRoomOverrides (): {[key: string]: Function} { initOccupants: function initOccupants (this: any) { const r = this.__super__.initOccupants() + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type const originalComparatorFunction: Function = this.occupants.comparator - this.occupants.comparator = function (this: any, occupant1: any, occupant2: any): Number { + this.occupants.comparator = function (this: any, occupant1: any, occupant2: any): number { // Overriding Occupants comparators, to display anonymous users at the end of the list. const nick1: string = occupant1.getDisplayName() const nick2: string = occupant2.getDisplayName() diff --git a/conversejs/lib/plugins/livechat-specific/message-action.ts b/conversejs/lib/plugins/livechat-specific/message-action.ts index 87bb70ca..15452174 100644 --- a/conversejs/lib/plugins/livechat-specific/message-action.ts +++ b/conversejs/lib/plugins/livechat-specific/message-action.ts @@ -19,7 +19,7 @@ export function customizeMessageAction (plugin: any): void { try { txt += this.model.getDisplayName() as string txt += ' - ' - const date = new Date(this.model.get('edited') || this.model.get('time')) + const date = new Date((this.model.get('edited') || this.model.get('time')) as string) txt += date.toLocaleDateString() + ' ' + date.toLocaleTimeString() txt += '\n' } catch {} diff --git a/conversejs/lib/plugins/livechat-specific/muc-bottom-panel.ts b/conversejs/lib/plugins/livechat-specific/muc-bottom-panel.ts new file mode 100644 index 00000000..5ff33057 --- /dev/null +++ b/conversejs/lib/plugins/livechat-specific/muc-bottom-panel.ts @@ -0,0 +1,23 @@ +// SPDX-FileCopyrightText: 2024 John Livingston +// +// SPDX-License-Identifier: AGPL-3.0-only + +/** + * Override the MUCBottomPanel custom element + */ +export function customizeMUCBottomPanel (plugin: any): void { + const _converse = plugin._converse + const MUCBottomPanel = _converse.api.elements.registry['converse-muc-bottom-panel'] + if (MUCBottomPanel) { + class MUCBottomPanelOverloaded extends MUCBottomPanel { + async initialize (): Promise { + await super.initialize() + // We must refresh the bottom panel when these features changes (to display the infobox) + // FIXME: the custom muc-bottom-panel template should be used here, in an overloaded render method, instead + // of using webpack to overload the original file. + this.listenTo(this.model.features, 'change:x_peertubelivechat_emoji_only_mode', () => this.requestUpdate()) + } + } + _converse.api.elements.define('converse-muc-bottom-panel', MUCBottomPanelOverloaded) + } +} diff --git a/conversejs/lib/plugins/livechat-specific/toolbar.ts b/conversejs/lib/plugins/livechat-specific/toolbar.ts index 32c4ce6f..a832fa3d 100644 --- a/conversejs/lib/plugins/livechat-specific/toolbar.ts +++ b/conversejs/lib/plugins/livechat-specific/toolbar.ts @@ -2,6 +2,9 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: @stylistic/indent is buggy with strings literrals. +/* eslint-disable @stylistic/indent */ + /** * Do some customization on the toolbar: * * change the appearance of the toggle occupants button diff --git a/conversejs/lib/plugins/livechat-specific/utils.ts b/conversejs/lib/plugins/livechat-specific/utils.ts index 14644041..b81e3a4c 100644 --- a/conversejs/lib/plugins/livechat-specific/utils.ts +++ b/conversejs/lib/plugins/livechat-specific/utils.ts @@ -25,7 +25,7 @@ export function getOpenPromise (): any { promise.isResolved = false promise.isPending = false promise.isRejected = true - throw (e) + throw (e as Error) } ) return promise diff --git a/conversejs/lib/plugins/livechat-viewer-mode.ts b/conversejs/lib/plugins/livechat-viewer-mode.ts index 4d889c88..b3d2cd7b 100644 --- a/conversejs/lib/plugins/livechat-viewer-mode.ts +++ b/conversejs/lib/plugins/livechat-viewer-mode.ts @@ -22,11 +22,11 @@ export const livechatViewerModePlugin = { console.error('[livechatViewerModePlugin] getDefaultMUCNickname is not initialized.') } else { Object.assign(_converse.exports, { - getDefaultMUCNickname: function (this: any): any { + getDefaultMUCNickname: function (this: any, ...args: any[]): any { if (!_converse.api.settings.get('livechat_enable_viewer_mode')) { - return originalGetDefaultMUCNickname.apply(this, arguments) + return originalGetDefaultMUCNickname.apply(this, args) } - return originalGetDefaultMUCNickname.apply(this, arguments) ?? + return originalGetDefaultMUCNickname.apply(this, args) ?? getPreviousAnonymousNick() ?? randomNick('Anonymous') } @@ -72,8 +72,8 @@ export const livechatViewerModePlugin = { // Note: when previousNickname is set, model.get('nick') has not the nick yet... // It will only come after receiving a presence stanza. // So we use previousNickname before trying to read the model. - const nick = getPreviousAnonymousNick() ?? (model?.get ? model.get('nick') : '') - refreshViewerMode(nick && !/^Anonymous /.test(nick)) + const nick = getPreviousAnonymousNick() ?? (model?.get ? model.get('nick') as string : '') + refreshViewerMode(!!nick && !/^Anonymous /.test(nick)) }) } } diff --git a/conversejs/lib/plugins/slow-mode.ts b/conversejs/lib/plugins/slow-mode.ts index 748a0a25..c03f7984 100644 --- a/conversejs/lib/plugins/slow-mode.ts +++ b/conversejs/lib/plugins/slow-mode.ts @@ -21,7 +21,13 @@ export const slowModePlugin = { return } - const slowModeDuration = parseInt(chatbox?.config?.get('slow_mode_duration')) + const slowModeDurationRaw = chatbox?.config?.get('slow_mode_duration') ?? NaN + const slowModeDuration = + typeof slowModeDurationRaw === 'string' + ? parseInt(slowModeDurationRaw) + : typeof slowModeDurationRaw === 'number' + ? Math.trunc(slowModeDurationRaw) + : NaN if (!(slowModeDuration > 0)) { // undefined, NaN, ... are not considered > 0. return } diff --git a/conversejs/lib/utils.ts b/conversejs/lib/utils.ts index 3893c8de..924c5101 100644 --- a/conversejs/lib/utils.ts +++ b/conversejs/lib/utils.ts @@ -5,7 +5,7 @@ function inIframe (): boolean { try { return window.self !== window.top - } catch (e) { + } catch (_err) { return true } } diff --git a/conversejs/loc.keys.js b/conversejs/loc.keys.js index ed3ebe95..019c63bd 100644 --- a/conversejs/loc.keys.js +++ b/conversejs/loc.keys.js @@ -62,7 +62,13 @@ const locKeys = [ 'moderator_note_original_nick', 'search_occupant_message', 'message_search', - 'message_search_original_nick' + 'message_search_original_nick', + 'emoji_only_info', + 'announcements_message_type', + 'announcements_message_type_standard', + 'announcements_message_type_announcement', + 'announcements_message_type_highlight', + 'announcements_message_type_warning' ] module.exports = locKeys diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..636b1aae --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,207 @@ +// SPDX-FileCopyrightText: 2024 John Livingston +// +// SPDX-License-Identifier: AGPL-3.0-only + +import love from 'eslint-config-love' +import eslint from '@eslint/js' +import tseslint from 'typescript-eslint' +import typescriptParser from '@typescript-eslint/parser' +import stylistic from '@stylistic/eslint-plugin' +import eslintLit from 'eslint-plugin-lit' +import globals from 'globals' + +export default tseslint.config( + { + ignores: [ + 'node_modules/', 'dist/', 'webpack.config.js', + 'build/', + 'vendor/', + 'support/documentation', 'support', + 'build-*js' + ] + }, + eslint.configs.recommended, + ...tseslint.configs.recommended, + { + ...love, + files: ['**/*.ts'] + }, + stylistic.configs.customize({ + quotes: 'single', + semi: false, + commaDangle: 'never', + blockSpacing: true, + braceStyle: '1tbs', + indent: 2, + quoteProps: 'as-needed' + }), + { + rules: { + '@stylistic/space-before-function-paren': ['error', { anonymous: 'always', asyncArrow: 'always', named: 'always' }], + '@stylistic/arrow-parens': 'off', + '@stylistic/operator-linebreak': ['error', 'after', { overrides: { '?': 'before', ':': 'before' } }], + '@stylistic/max-statements-per-line': ['error', { max: 2 }] + } + }, + { + files: ['**/*.ts'], + rules: { + '@typescript-eslint/no-empty-function': ['error', { allow: ['arrowFunctions'] }], + 'no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }], + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }], + '@typescript-eslint/no-floating-promises': 'error', + '@typescript-eslint/no-misused-promises': ['error', { checksVoidReturn: false }], + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/strict-boolean-expressions': 'off', + '@typescript-eslint/return-await': [2, 'in-try-catch'], // FIXME: correct? + '@typescript-eslint/no-invalid-void-type': 'off', + '@typescript-eslint/triple-slash-reference': 'off', + '@typescript-eslint/no-explicit-any': 'off', // FIXME: should be "error", and we should use 'unknown' in the code. + 'init-declarations': 'off', + '@typescript-eslint/init-declarations': 'off', + '@typescript-eslint/consistent-type-imports': 'off', + '@typescript-eslint/consistent-type-exports': 'off', + '@typescript-eslint/no-require-imports': 'off', + '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/prefer-promise-reject-errors': 'off', + 'max-params': 'off', + '@typescript-eslint/max-params': ['error', { max: 8 }], // FIXME: this rules should use the default max value. + '@typescript-eslint/explicit-function-return-type': 'error', + '@typescript-eslint/no-confusing-void-expression': 'off', + '@typescript-eslint/class-methods-use-this': 'off', + '@typescript-eslint/non-nullable-type-assertion-style': 'off', + '@typescript-eslint/no-magic-numbers': 'off', + + '@typescript-eslint/no-unsafe-member-access': 'off', // FIXME: comes with eslint-config-love 84 update, and should be used. + '@typescript-eslint/no-unsafe-return': 'off', // FIXME: comes with eslint-config-love 84 update, and should be used. + '@typescript-eslint/no-unsafe-assignment': 'off', // FIXME: comes with eslint-config-love 84 update, and should be used. + '@typescript-eslint/no-unsafe-call': 'off', // FIXME: comes with eslint-config-love 84 update, and should be used. + + '@typescript-eslint/no-unnecessary-condition': 'off', // FIXME: comes with eslint-config-love 84 update, but seems buggy (false positive). + + 'max-len': [ + 'error', + { + code: 120, + comments: 120 + } + ] + } + }, + { + files: ['**/*.js'], + rules: { + // Disabling typescript-eslint rules for JS files (did not find a simplier way...) + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-floating-promises': 'off', + '@typescript-eslint/no-misused-promises': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/strict-boolean-expressions': 'off', + '@typescript-eslint/return-await': 'off', + '@typescript-eslint/no-invalid-void-type': 'off', + '@typescript-eslint/triple-slash-reference': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/init-declarations': 'off', + '@typescript-eslint/consistent-type-imports': 'off', + '@typescript-eslint/consistent-type-exports': 'off', + '@typescript-eslint/no-require-imports': 'off', + '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/prefer-promise-reject-errors': 'off', + '@typescript-eslint/max-params': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-confusing-void-expression': 'off', + '@typescript-eslint/class-methods-use-this': 'off', + '@typescript-eslint/non-nullable-type-assertion-style': 'off', + '@typescript-eslint/no-magic-numbers': 'off', + + 'max-params': 'off', + 'init-declarations': 'off', + 'no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }], + 'max-len': [ + 'error', + { + code: 120, + comments: 120 + } + ] + } + }, + { + files: ['.stylelintrc.js'], + languageOptions: { + globals: globals.node + } + }, + { + files: ['server/**/*.js', 'server/**/*.ts'], + languageOptions: { + ecmaVersion: 6, + globals: { + ...globals.node + }, + parser: typescriptParser, + parserOptions: { + ecmaVersion: 2018, + project: './server/tsconfig.json', + projectService: true + } + } + }, + { + files: ['shared/**/*.js', 'shared/**/*.ts'], + languageOptions: { + ecmaVersion: 6, + globals: { + ...globals.es2016, + ...globals.browser + }, + parser: typescriptParser, + parserOptions: { + ecmaVersion: 2018, + project: [ + './server/tsconfig.json' + // './client/tsconfig.json' // FIXME: dont really know what is necessary here. + ], + // FIXME: how to make projectService work? + projectService: false + // projectService: { + // allowDefaultProject: ['shared/lib/*.js', 'shared/lib/*.ts'], + // defaultProject: './server/tsconfig.json' + // } + } + } + }, + { + files: ['client/**/*.js', 'client/**/*.ts', 'conversejs/**/*.js', 'conversejs/**/*.ts'], + languageOptions: { + ecmaVersion: 6, + globals: { + ...globals.browser + }, + parser: typescriptParser, + parserOptions: { + ecmaVersion: 2018, + project: [ + './client/tsconfig.json', + './conversejs/tsconfig.json' + ] + } + }, + // FIXME: not sure elintLit works. + plugins: { + ...eslintLit.configs['flat/recommended'].plugins + }, + rules: { + ...eslintLit.configs['flat/recommended'].rules + } + }, + { + files: ['conversejs/build-*.js', 'conversejs/loc.keys.js', 'conversejs/custom/webpack.livechat.js'], + languageOptions: { + globals: { + ...globals.node + } + } + } +) diff --git a/languages/ar.yml b/languages/ar.yml index 4eef9af0..8fa6d2e5 100644 --- a/languages/ar.yml +++ b/languages/ar.yml @@ -46,7 +46,7 @@ livechat_configuration_channel_forbidden_words_label_label: الملصقة avatar_set_option_none: لا شيء successfully_saved: تم الحفظ بنجاح livechat_configuration_channel_slow_mode_label: الوضع البطيء -livechat_configuration_channel_forbidden_words_reason_label: السبب +livechat_configuration_channel_retractation_reason_label: السبب livechat_configuration_channel_bot_options_title: خيارات روبوت الإشراف livechat_configuration_channel_forbidden_words_comments_label: التعليقات livechat_configuration_channel_command_message_label: رسالة diff --git a/languages/cs.yml b/languages/cs.yml index e69de29b..1484cada 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -0,0 +1,548 @@ +open_chat_new_window: Otevřít chat v novém okně +open_chat: Otevřít chat +close_chat: Zavřít chat +use_current_theme_color: Použít aktuální barvy motivu +not_found: Nenalezeno +video: Video +web: Web +important_note_title:

Důležité poznámky

+chat: Chat +last_activity: Poslední aktivita +use_chat: Použití chatu +use_chat_help: Pokud je to povoleno, vedle videa se zobrazí chat. +share_chat_link: Sdílet odkaz na chat +read_only: Pouze pro čtení +link_copied: Odkaz zkopírován +error: Chyba +chat_terms_label: Podmínky a pravidla +show_scrollbarr: Zobrazit posuvník +transparent_background: Průhledné pozadí (pro integraci streamu, například s OBS) +copy: Kopírovat +copied: Zkopírováno +open: Otevřít +generate_iframe: Vytvoření iframe pro vložení chatu do webové stránky +chat_for_live_stream: 'Chat pro živý stream:' +room_name: Název místnosti +room_description: Popis místnosti +connect_using_xmpp: Připojení pomocí XMPP +connect_using_xmpp_help: K místnosti se můžete připojit pomocí externího účtu XMPP + a svého oblíbeného klienta XMPP. +important_note_text: "Dokumentaci pluginu naleznete zde:\n\n Dokumentace k zásuvnému modulu Peertube Livechat\n.\n" +diagnostic: "Než požádáte o pomoc, použijte prosím diagnostický nástroj:\nSpustit diagnostiku\n(pokud toto + tlačítko neotevře nové okno, zkuste stránku obnovit).\n" +chat_title:

Chat

+online_help: Online nápověda +tips_for_streamers: "Tipy pro streamery: Chcete-li například vložit chat do svého + videostreamu pomocí OBS, \nvygenerujte odkaz pouze pro čtení a použijte jej jako + zdroj v prohlížeči.\n" +channel: Kanál +external_auth_custom_oidc_button_label_label: Popisek pro tlačítko připojení +external_auth_custom_oidc_label: Použití poskytovatele služby OpenID Connect +external_auth_custom_oidc_discovery_url_label: Discovery URL +auto_display_label: Automatické otevření chatu +converse_theme_option_peertube: Motiv Peertube +converse_theme_option_cyberpunk: Motiv ConverseJS Cyberpunk +external_auth_oidc_client_id_label: Client ID +external_auth_oidc_client_secret_label: Client secret +external_auth_google_oidc_label: Použít Google +external_auth_oidc_redirect_uris_info_description: "URI zpětného volání/přesměrování:\n + Pokud chcete nakonfigurovat URI autorizovaného přesměrování na externí aplikaci, + přidejte tuto adresu URL:\n" +all_lives_description: Pokud je zaškrtnuto, bude chat povolen pro všechny živé přenosy. +per_live_video_description: Pokud je zaškrtnuto, budou mít všechna živá videa ve svých + vlastnostech zaškrtávací políčko pro povolení webového chatu. +all_non_lives_description: Pokud je zaškrtnuto, bude chat povolen pro všechna videa, + která nejsou živá. +avatar_set_option_legacy: Starší avatary Sepia (ty, které byly součástí předchozích + verzí zásuvného modulu) +chat_behaviour_description:

Chování na chatu

+auto_display_description: Při sledování videa se automaticky otevře okno chatu. +share_url_option_owner: Zobrazit majiteli videa +share_url_option_everyone: Zobrazit pro každého +all_lives_label: Aktivace chatu pro všechny živé přenosy +no_anonymous_description: "Pokud je zaškrtnuto, anonymní uživatelé Peertube chat neuvidí.\n + Tato funkce je stále experimentální.\nPokud jste ji povolili, důrazně doporučujeme + zaškrtnout také možnost \"Nezveřejňovat informace o chatu\".\nV opačném případě + by se některé nástroje třetích stran mohly pokusit chat otevřít a chovat se nepředvídatelně.\n" +theming_advanced_description:

Témata

+converse_theme_option_default: Výchozí motiv ConverseJS +avatar_set_option_none: Žádné +converse_theme_label: Motiv ConverseJS +converse_theme_description: Vyberte si motiv converseJS, který chcete použít. +videos_list_label: Aktivovat chat pro tato videa +avatar_set_option_fenec: Fenek (maskot Mobilizon) +list_rooms_description: "Seznam místností\n" +room_type_label: Typ místnosti +list_rooms_label: Seznam stávajících místností +federation_dont_publish_remotely_description: "Zaškrtnutím tohoto nastavení vaše instance + nebude publikovat informace o chatu na fediverse.\nVzdálené instance Peertube nebudou + vědět, že se jedná o chatovací místnosti spojené s vašimi videi.
\nUpozornění: + pokud jste již chatovali, je možné, že informace již byly zveřejněny.\nNež bude + zveřejnění informací zrušeno, budete muset počkat na další aktualizaci videa.\n + Pokud toto nastavení zakážete, budete muset počkat, až budou videa aktualizována, + než budou informace\nznovu zveřejněno. K této aktualizaci dojde mimo jiné, když + se živý přenos obnoví nebo zastaví.
\nUpozornění: toto nastavení ovlivňuje + pouze zveřejňování informací prostřednictvím protokolu ActivityPub.\nNezabrání vzdálené + aplikaci, aby jinak zjistila přítomnost chatů a pokusila se k ní připojit.\n" +external_auth_custom_oidc_title:

Připojení OpenID

+avatar_set_option_sepia: Sépie (maskot Peertube) +avatar_set_option_abstract: Abstrakt +external_auth_description: "

Externí ověřování

\nPro uživatele, kteří nemají + účet na Peertube, můžete povolit různé režimy ověřování na základě poskytovatelů + vzdáleného ověřování.\n" +external_auth_custom_oidc_button_label_description: Tento popisek se zobrazí uživatelům + jako popisek tlačítka pro ověření u tohoto poskytovatele OIDC. +share_url_option_nobody: Zobrazit pro nikoho +share_url_option_owner_moderators: Zobrazit pro majitele videa a moderátory instance +per_live_video_label: Uživatelé si mohou aktivovat chat pro své živé přenosy +federation_no_remote_chat_label: Nezobrazovat vzdálené chaty +federation_no_remote_chat_description: "Pokud toto nastavení zaškrtnete, vaše instance + nebude nikdy zobrazovat chaty ze vzdálených videí.\n" +external_auth_facebook_oidc_label: Použít Facebook +open_blank_label: Zobrazit tlačítko "otevřít v novém okně" +open_blank_description: K dispozici bude tlačítko pro otevření webového chatu v novém + okně. +per_live_video_warning_description: "\n Povolili jste nastavení «Uživatelé mohou aktivovat chat pro svůj živé přenosy».\n + S nastavením «Aktivovat chat pro všechny živé přenosy» je redundantní.\n\n" +all_non_lives_label: Aktivace chatu pro všechny neživé přenosy +videos_list_description: "Videa UUID, pro která chceme webový chat.\nMohou to být + neživá videa. Jeden na řádek.
\nMůžete přidávat komentáře: vše za znakem # + bude odstraněno a prázdné řádky budou ignorovány.
\nNepřidávejte soukromá videa, + UUID budou odeslána do frontendu.\n" +avatar_set_label: Sada Avatarů +avatar_set_description: "Můžete si vybrat z několika různých sad výchozích avatarů, + které budou použity pro uživatele chatu.\nPodívejte se prosím na dokumentaci:\n + Nastavení.\n" +external_auth_facebook_oidc_description: "Povolením této funkce se přidá tlačítko + \"přihlásit se pomocí Facebooku\".\nMusíte nakonfigurovat aplikaci Facebook OAuth.\n" +share_url_label: Zobrazení tlačítka "sdílet odkaz na chat" +share_url_description: K dispozici bude tlačítko pro sdílení url adresy chatu (lze + použít například pro integraci OBS). +no_anonymous_label: Skrytí chatu pro anonymní uživatele +auto_ban_anonymous_ip_label: Zakázat IP adresu anonymního uživatele, když je uživatel + vykázán z chatovací místnosti +auto_ban_anonymous_ip_description: "Povolením této možnosti bude při každém zákazu + anonymního uživatele v chatovací místnosti jeho IP adresa rovněž zakázána na chatovacím + serveru.\nUpozornění: Pokud je vaše instance otevřená pro registraci, může kterýkoli + uživatel vytvořit místnost v pasti, pozvat uživatele, aby se k ní připojili, a automaticky + zakázat všechny IP adresy anonymních uživatelů.\nSeznam zakázaných IP se neukládá, + vymaže se při restartu serveru nebo při změně nastavení některého zásuvného modulu.\n + Zakázané IP jsou zaznamenány v logovacích souborech serveru Prosody, takže správci + serveru mohou případně použít některé externí nástroje (jako fail2ban) pro širší + zakázání IP.\n" +avatar_set_option_cat: Kočky +avatar_set_option_bird: Ptáci +chat_terms_description: "Tyto podmínky se zobrazí všem uživatelům, když se připojí + k chatovacím místnostem.\nStreameři mohou také nastavit podmínky pro své kanály, + které se zobrazí hned po těchto globálních podmínkách.\n" +external_auth_custom_oidc_description: "Můžete nakonfigurovat externího poskytovatele + OpenID Connect, který by mohl být použit k přihlášení do chatu.\nPodívejte se prosím + na dokumentaci:\nNastavení.\n" +federation_dont_publish_remotely_label: Nezveřejňujte informace z chatu +room_type_description: Zde si můžete vybrat, zda chcete mít pro každé video samostatnou + místnost, nebo zda je chcete seskupit podle kanálů. +room_type_option_video: Každé video má vlastní webchatovou místnost +room_type_option_channel: Místnosti webového chatu jsou seskupeny podle kanálů +federation_description: "

Federace

\nNásledující nastavení se týkají federace + s jinými instancemi Peertube,\na dalšími fediverzními softwary.\n" +external_auth_google_oidc_description: "Povolením této funkce se přidá tlačítko \"\ + Přihlásit se pomocí Google\".\nMusíte nakonfigurovat aplikaci Google OAuth.\n" +prosody_muc_log_by_default_description: "Pokud je zaškrtnuto, obsah místnosti se ve + výchozím nastavení uloží.\nKaždý uživatel, který se připojí k místnosti, uvidí, + co bylo napsáno před jeho připojením.
\nVezměte prosím na vědomí, že je vždy + možné obsah zapnout/vypnout.\narchivaci pro konkrétní místnost úpravou jejích vlastností.\n" +disable_websocket_label: Zakázat Websocket +prosody_port_label: Prosody port +autocolors_label: Automatická detekce barev +autocolors_description: "Pokus o automatickou detekci barev podle aktuálního motivu + uživatele.
\nPokud je toto nastavení povoleno, \nzásuvný modul se pokusí automaticky + detekovat barvy, které se použijí v tématu chatu.
\nPokud to pro některé téma + Peertube nefunguje správně, můžete tuto možnost zakázat.\nChybu můžete nahlásit + na oficiálním \nsledovači problémů\n. Nezapomeňte uvést, který motiv nefunguje.\n" +disable_websocket_description: "S Peertube >= 5.0.0, tento plugin se snaží používat + Websocket připojení pro chatování.\nPokud je prohlížeč nebo připojení uživatele + nekompatibilní, prohlížeč automaticky přejde zpět na protokol BOSH.\n
\nVe výjimečných + případech však může dojít k selhání. Například pokud máte před Peertube reverzní + proxy server, který nepovoluje \nWebsocket připojení pro zásuvné moduly.\nV takovém + případě můžete zaškrtnutím tohoto nastavení zakázat připojení Websocket.\n" +prosody_muc_log_by_default_label: Obsah přihlašovacích místností ve výchozím nastavení +prosody_muc_expiration_label: Vypršení platnosti protokolů místností +system_prosody_label: Použití systému Prosody +help_builtin_prosody_description: "Tento zásuvný modul používá k obsluze chatovacích + místností server XMPP Prosody.
\nTento zásuvný modul je dodáván s obrazem aplikace + Prosody, který se používá ke spuštění služby.\n" +prosody_peertube_uri_label: URL Peertube pro volání API +chat_style_description: "Další styly, které mají být přidány do atributu stylu iframe. +
\nPříklad: height:400px;\n" +system_prosody_description: "Upozornění: toto nastavení nezkoušejte, pokud si nejste + jisti, co děláte.
\nZaškrtnutím tohoto nastavení bude váš Peertube používat server + Prosody, který je dodáván s vaším systémem,\n a ne vestavěný AppImage.
\nToto + nastavení použijte pouze v případě, že se setkáte s problémy s vestavěným serverem + Prosody.\n" +prosody_port_description: "Port, který bude používat server Prosody.
\nZměňte jej, + pokud je tento port na vašem serveru již používán.
\nTento port můžete na svém + firewallu zavřít, nebude k němu přístup z vnějšího světa.
\nPoznámka: toto se + může v blízké budoucnosti změnit, protože se plánuje přidání funkce pro aktivaci + připojení zvenčí.\n" +prosody_advanced_description:

Pokročilé nastavení serveru chatu

+help_builtin_prosody_label: Prosody server +prosody_peertube_uri_description: "Pokud nevíte, co děláte, nechte prosím toto nastavení + prázdné.
\nV některých vzácných případech nemůže Prosody volat rozhraní API Peertube + z jeho veřejného URI.\nToto pole můžete použít k přizpůsobení URI Peertube pro moduly + Prosody\n(například pomocí „http://localhost:9000“ nebo „http://127.0.0.1:9000“).\n" +chat_style_label: Atribut stylu iframe webového chatu +prosody_room_allow_s2s_label: Povolení připojení k místnosti pomocí externích účtů + XMPP +prosody_muc_expiration_description: "Zde můžete zvolit, jak dlouho bude obsah chatovací + místnosti na serveru uchováván. Hodnota může být:\n
    \n
  • 60: obsah bude + uložen po dobu 60 sekund. Hodnotu 60 můžete nahradit libovolnou celočíselnou + hodnotou.
  • \n
  • 1d: obsah bude uložen po dobu 1 dne. Hodnotu 1 + můžete nahradit libovolnou celočíselnou hodnotou.
  • \n
  • 1w: obsah bude + uložen na 1 týden. Hodnotu 1 můžete nahradit libovolnou celočíselnou hodnotou.
  • \n +
  • 1m: obsah bude uložen na 1 měsíc. 1 můžete nahradit libovolnou + celočíselnou hodnotou.
  • \n
  • 1y: obsah bude uložen po dobu 1 roku. + 1 můžete nahradit libovolnou celočíselnou hodnotou.
  • \n
  • nikdy: obsah + nikdy nevyprší a bude uchováván navždy.
  • \n
\n" +prosody_c2s_label: Povolení připojení klienta k serveru +prosody_c2s_port_label: Port klienta Prosody na server +prosody_c2s_interfaces_label: Síťová rozhraní mezi klientem a serverem +prosody_s2s_port_label: Server Prosody na port serveru +prosody_s2s_interfaces_label: Síťová rozhraní mezi servery +prosody_c2s_description: "Povolení připojení klientů XMPP k vestavěnému serveru Prosody.
\n + Pouze tato volba umožňuje připojení pouze klientům localhost.\n" +prosody_s2s_interfaces_description: "Síťová rozhraní, na kterých se má naslouchat + pro připojení serveru k serveru.
\nSeznam IP adres pro naslouchání, oddělených + čárkami (mezery budou odstraněny).
\nMůžete použít „*“ pro naslouchání na všech + rozhraních IPv4 a „::“ pro všechna rozhraní IPv6.
\nPříklady:\n
    \nPříklady: +
  • *, ::
  • \n
  • *
  • \n
  • 127.0.0.1, ::1
  • \n
  • 172.18.0.42
  • \n
\n" +prosody_certificates_dir_description: "Pokud je toto pole prázdné, zásuvný modul bude + generovat a používat certifikáty podepsané vlastním podpisem.
\nPokud chcete + použít jiné certifikáty, stačí zde zadat složku, kde je \nProsody najde. Poznámka: + uživatel „peertube“ musí mít k této složce přístup pro čtení.\n" +prosody_c2s_port_description: "Port, který bude používat modul c2s integrovaného serveru + Prosody.
\nKlienti XMPP budou pro připojení používat tento port.
\nZměňte + jej, pokud je tento port na vašem serveru již používán.
\nTento port můžete prozatím + nechat na svém firewallu zavřený, nebude k němu přístup z vnějšího světa.
\n + Poznámka: to se může v blízké budoucnosti změnit, protože se plánuje přidání funkce + pro aktivaci připojení zvenčí.\n" +prosody_certificates_dir_label: Složka certifikátů +prosody_room_allow_s2s_description: "Povolením této možnosti se bude možné připojit + k místnostem pomocí externích účtů XMPP a klientů XMPP.
\n\n + Upozornění, povolení této možnosti může vyžadovat další konfiguraci serveru + a DNS.\n\nPodívejte se prosím do dokumentace:\n.\nPovolení externího připojení k účtu XMPP.\n\n" +prosody_s2s_port_description: "Port, který bude použit pro připojení XMPP s2s (server + to server).
\nMěli byste použít standardní port 5269.\nV opačném případě byste + měli \nnastavit konkrétní záznam DNS\n.\n" +prosody_components_list_label: Externí komponenty +prosody_c2s_interfaces_description: "Síťová rozhraní, na kterých bude naslouchat připojení + klienta k serveru.
\nToto nastavení je určeno pro pokročilé uživatele. Toto nastavení + neměňte, pokud plně nerozumíte tomu, co znamená.
\nSeznam IP adres k poslechu, + oddělené čárkou (mezery budou odstraněny).
\nMůžete použít «*» pro poslech na + všech rozhraních IPv4 a «::» pro všechna IPv6.
\nPříklady:\n
    \n
  • *, ::
  • \n +
  • *
  • \n
  • 127.0.0.1, ::1
  • \n
  • 127.0.0.1, ::1, 172.18.0.42
  • \n
\n" +prosody_components_label: Povolit vlastní externí součásti Prosody +prosody_components_interfaces_description: "Síťová rozhraní pro naslouchání připojení + externích komponent.
\nSeznam IP adres k poslechu, oddělené čárkou (mezery budou + odstraněny).
\nMůžete použít «*» pro poslech na všech rozhraních IPv4 a «::» + pro všechna IPv6.
\nPříklady:\n
    \n
  • *, ::
  • \n
  • *
  • \n
  • 127.0.0.1, + ::1
  • \n
  • 172.18.0.42
  • \n
\n" +prosody_components_interfaces_label: Síťová rozhraní externích komponent Prosody +prosody_components_port_description: "Port, který budou komponenty XMPP používat pro + připojení k serveru Prosody.
\nZměňte jej, pokud se tento port již na vašem serveru + používá.
\nPokud nepovolíte přístup jiným rozhraním než localhost, můžete tento + port ponechat na vašem firewallu uzavřený.\n" +prosody_components_description: "Povolte použití externích komponent XMPP.
\nTato + možnost sama o sobě umožňuje připojení pouze z localhost.\nMusíte nastavit naslouchací + rozhraní a otevřít port na vašem firewallu, abyste jej zpřístupnili ze vzdálených + serverů.
\nTuto funkci lze například použít k připojení některých robotů k chatovacím + místnostem.\n" +prosody_components_port_label: Port pro externí komponenty Prosody +prosody_components_list_description: "Externí komponenty, které je třeba deklarovat:\n +
    \n
  • Jedna na řádek.
  • \n
  • Použijte formát «název_komponenty:tajné_komponenty» + (mezery budou oříznuty).
  • \n
  • Můžete přidávat komentáře: vše za znakem # bude + odstraněno a prázdné řádky budou ignorovány.
  • \n
  • Název může obsahovat pouze + latinské alfanumerické znaky a tečky.
  • \n
  • \n Pokud název obsahuje pouze alfanumerické + znaky, bude doplněn o doménu XMPP.\n Například „most“ se změní na „most.vaše_doména.tld“.\n + Můžete také zadat úplný název domény, ale musíte se ujistit, že jste správně nakonfigurovali + DNS.\n
  • \n
  • V tajné přístupové frázi používejte pouze alfanumerické znaky + (použijte alespoň 15 znaků).
  • \n
\n" +livechat_configuration_desc: Zde můžete nakonfigurovat některé pokročilé možnosti + pro chatovací místnosti přidružené k živým přenosům. +save: Uložit +cancel: Zrušit +disable_channel_configuration_label: Zakázat pokročilou konfiguraci kanálu a chatbota +successfully_saved: Úspěšně uloženo +menu_configuration_label: Chatovací místnosti +configuration_description: "

Pokročilá konfigurace kanálu

\nNásledující nastavení + se týkají pokročilých možností kanálu:\nuživatelé budou moci přidat některá přizpůsobení + na svých kanálech,\naktivovat moderačního bota, ...\n" +livechat_configuration_title: Konfigurace vašich chatovacích místností +experimental_warning: "Experimentální + funkce: tato funkce je stále experimentální.\n" +livechat_configuration_please_select: Vyberte prosím níže jeden z vašich kanálů a + nastavte jeho možnosti chatování. +livechat_configuration_channel_retractation_reason_label: Důvod +livechat_configuration_channel_retractation_reason_desc: Důvod zobrazení kromě smazaných + zpráv +livechat_configuration_applytomoderators_label: Také moderovat zprávy od moderátorů +livechat_configuration_applytomoderators_desc: "Ve výchozím nastavení se tato funkce + na zprávy moderátora nevztahuje.\nZaškrtnutím této možnosti budou zprávy od moderátorů + rovněž odstraněny.\n" +livechat_configuration_channel_forbidden_words_label_label: Štítek +livechat_configuration_channel_forbidden_words_desc: "Můžete nastavit některá slova, + která bude bot automaticky moderovat (zprávy obsahující tato slova budou okamžitě + odstraněny).\nMůžete také přidat volitelný důvod, který se zobrazí na místě smazaných + zpráv.\nNa stránce s dokumentací je uvedeno několik příkladů.\n" +livechat_configuration_channel_forbidden_words_label_desc: Označení tohoto pravidla + pro zakázaná slova +livechat_configuration_channel_quote_label: Časovač +livechat_configuration_channel_quote_desc2: "Jedna zpráva na řádek.\nPokud je zpráv + více, vybere se jedna náhodně každých X minut.\n" +livechat_configuration_channel_quote_delay_label: Odeslat každých X minut +livechat_configuration_channel_quote_delay_desc: "Bot bude zprávu odesílat každých + X minut.\n" +livechat_configuration_channel_desc: Zde můžete nastavit některé možnosti pro tento + kanál (zásady moderování, ...). +livechat_configuration_channel_title: Možnosti kanálů +livechat_configuration_channel_enable_bot_label: Povolení moderačního bota +livechat_configuration_channel_bot_options_title: Možnosti moderačního bota +livechat_configuration_channel_forbidden_words_label: Zakázaná slova nebo výrazy +livechat_configuration_channel_forbidden_words_desc2: "Jedno slovo nebo výraz na řádek. + Pokud na jeden řádek vložíte více slov, budou se porovnávat pouze zprávy obsahující + celou sekvenci.\n" +livechat_configuration_channel_forbidden_words_regexp_desc: Zaškrtnutím této možnosti + můžete použít regulární výrazy. +livechat_configuration_channel_forbidden_words_regexp_label: Považujte za regulární + výrazy +livechat_configuration_channel_quote_desc: "Můžete nakonfigurovat několik časovačů, + které budou odesílat zprávy v pravidelných intervalech.\nTyto zprávy bude bot odesílat + každých X minut.\nMůžete například nastavit, aby bot odesílal každých 5 minut nějaké + informace o sponzorování.\n" +livechat_configuration_channel_quote_label2: Zprávy +livechat_configuration_channel_slow_mode_desc: "Výchozí hodnota pomalého režimu:\n +
    \n
  • 0: pomalý režim vypnut
  • \n
  • Jakékoli kladné celé číslo: uživatelé + mohou odeslat zprávu každých X sekund (moderátoři nejsou omezeni)
  • \n
\n" +livechat_configuration_channel_forbidden_words_comments_desc: "Můžete sem přidat komentář + k tomuto pravidlu, abyste si pamatovali, jak a proč jste ho vytvořili.\nTyto komentáře + jsou čistě orientační a nemají žádný vliv na chování bota.\n" +livechat_configuration_channel_slow_mode_label: Pomalý režim +livechat_configuration_channel_forbidden_words_comments_label: Komentáře +livechat_configuration_channel_command_message_desc: Zpráva k odeslání. +livechat_configuration_channel_command_message_label: Zpráva +livechat_configuration_channel_command_cmd_desc: "Příkaz bez počátečního \"!\". Například + \"help\", \"sponzor\", ...\n" +livechat_configuration_channel_for_more_info: "Další informace o konfiguraci této + funkce naleznete v dokumentaci kliknutím na tlačítko nápovědy.\n" +livechat_configuration_channel_command_cmd_label: Příkaz +share_chat_dock_tips: "Můžete si vygenerovat odkaz, který otevře chat na celé stránce, + přihlášený pomocí účtu Peertube.\nToho lze využít například k tomu, abyste měli + v OBS webový dok, takže můžete chat číst a komunikovat s ním přímo z OBS.\nTento + odkaz nikomu nesdělujte, protože by mu umožnil připojit se jako vy.\nNíže naleznete + seznam již vygenerovaných autentizačních tokenů.\nMůžete si vytvořit nový nebo zrušit + jakýkoli předchozí token.\nUpozorňujeme, že tyto tokeny nemají žádné datum platnosti.\n" +tasks: Úkoly +task_list_create: 'Vytvořit nový seznam úkolů:' +task_create: Vytvořit nový úkol +task_name: Název úkolu +task_description: Popis +slow_mode_info: Je povolen pomalý režim, uživatelé mohou odeslat zprávu každých %1$s + sekund. +task_delete_confirm: Opravdu chcete tento úkol odstranit? +invalid_value_wrong_type: Hodnota je nesprávného typu. +livechat_configuration_channel_banned_jids_label: Zakázaní uživatelé a vzory +livechat_configuration_channel_bot_nickname: Přezdívka Bota +invalid_value_missing: Tato hodnota je vyžadována. +validation_error: Při ověřování došlo k chybě. +too_many_entries: Příliš mnoho položek +login_using_external_account: Přihlášení pomocí externího účtu +login_remote_peertube_url: URL adresa vaší instance Peertube +login_remote_peertube: 'Přihlaste se pomocí účtu na jiné instanci Peertube:' +login_remote_peertube_video_not_found: Toto video není na této instanci Peertube k + dispozici. +login_remote_peertube_searching: Hledání videa na Peertube instanci... +login_remote_peertube_url_invalid: Neplatná URL adresa Peertube. +login_remote_peertube_no_livechat: Zásuvný modul livechat není v této instanci Peertube + nainstalován. +login_remote_peertube_video_not_found_try_anyway: V některých případech lze video + načíst i po připojení ke vzdálené instanci. +login_remote_peertube_video_not_found_try_anyway_button: Přesto zkuste otevřít video + na instanci Peertube +login_external_auth_alert_message: Ověření se nezdařilo +task_list_create_error: Chyba při ukládání seznamu úkolů +task_list_name: Název seznamu úkolů +task_delete: Smazat úkol +task_list_pick_title: Vyberte seznam úkolů +token_label: Štítek +token_password: Token s heslem +token_date: Datum +token_action_create: Vytvořit nový token +token_action_revoke: Odvolání tokenu +invalid_value_file_too_big: 'Velikost souboru je příliš velká (maximální velikost: + %s).' +task_list_pick_message: "Po výběru seznamu úkolů se vytvoří nový úkol.\nChcete-li + úkol zobrazit, otevřete aplikaci úkolů pomocí horního menu.\nVíce informací naleznete + v dokumentaci k zásuvnému modulu livechat.\n" +invalid_value_wrong_format: Hodnota je v nesprávném formátu. +livechat_emojis_file: Soubor +action_import_emojis_info: Pokud jsou importovaná data v pořádku, nezapomeňte formulář + uložit. +token_action_revoke_confirm: Opravdu chcete tento token odvolat? +auth_description: "

Autentifikace

\n" +livechat_token_disabled_label: Zakázat tokeny livechatu +invalid_value_not_in_range: Hodnota není v povoleném rozsahu. +invalid_value_duplicate: Duplicitní hodnota +task_list_delete: Smazat seznam úkolů +task_list_delete_confirm: Opravdu chcete tento seznam úkolů smazat? +task_list_pick_empty: Zatím neexistuje žádný seznam úkolů, nejprve si ho vytvořte +promote: Staňte se moderátorem +livechat_configuration_channel_emojis_title: Emotikony kanálu +livechat_configuration_channel_emojis_desc: "Pro svůj kanál můžete nakonfigurovat + vlastní emotikony.\nTyto emotikony budou k dispozici ve výběru emotikonů.\nUživatelé + je mohou používat také pomocí jejich krátkého názvu (například napsáním \":shortname:\"\ + ).\n" +livechat_emojis_shortname: Zkrácený název +livechat_emojis_shortname_desc: "V chatu můžete používat emotikony pomocí \":shortname:\"\ + .\nKrátký název může začínat a/nebo končit dvojtečkou (:) a může obsahovat pouze + alfanumerické znaky, podtržítka a pomlčky.\nDůrazně doporučujeme začínat je dvojtečkou, + aby uživatelé mohli používat automatické doplňování (zadáním \":\" a následným stisknutím + klávesy TAB).\n" +livechat_emojis_file_desc: "Soubor emotikonů.\n" +action_import: Import +action_add_entry: Přidat položku +action_remove_entry: Odebrat tuto položku +action_remove_entry_confirm: Opravdu chcete tuto položku odstranit? +loading_error: Při načítání dat došlo k chybě. +share_chat_embed: Vložit +share_chat_peertube_tips: Tento odkaz otevře chat v rozhraní Peertube. +share_chat_dock: Dock +token_default_label: Token generovaný z webového rozhraní +login_remote_peertube_video_open_failed: 'Váš prohlížeč zablokoval otevření ve vzdálené + instanci, zkuste prosím otevřít tento odkaz ručně:' +invalid_value_too_long: Hodnota je příliš dlouhá +action_export: Export +invalid_value: Neplatná hodnota. +chatroom_not_accessible: Tato chatovací místnost neexistuje nebo k ní nemáte přístup. +prosody_firewall_configuration_help: "Zde můžete konfigurovat modul Prosody mod_firewall.\n + Níže můžete vytvořit více konfiguračních souborů a měnit jejich pořadí.\nNeváhejte + se o své konfigurace podělit s komunitou (například přidáním příkladů do dokumentace + zásuvného modulu).\n" +livechat_configuration_channel_anonymize_moderation_desc: "Anonymizovat výchozí hodnotu + moderačních akcí pro nové místnosti.\nPokud je tato možnost povolena, budou moderátorské + akce anonymizovány, aby se zabránilo prozrazení toho, kdo banuje/vyhazuje/... obyvatele.\n" +prosody_firewall_description: "Na serveru Prosody můžete povolit mod_firewall.\nDalší informace naleznete v dokumentaci.\n" +muted_anonymous_message: Zprávy mohou posílat pouze registrovaní uživatelé. +livechat_configuration_channel_mute_anonymous_label: Ztlumit anonymní uživatele +moderation_delay: Zpoždění moderování +livechat_configuration_channel_moderation_delay_desc: "Výchozí hodnota zpoždění moderování:\n +
    \n
  • 0: zpoždění moderace vypnuto
  • \n
  • Ljakékoli kladné celé číslo: zprávy + budou pro účastníky, kteří nejsou moderátory, zpožděny o X sekund, což moderátorům + umožní smazat zprávu dříve, než si ji přečte kterýkoli uživatel.
  • \n
\n" +emoji_only_info: Pokud je povolen režim pouze emoji, můžete ve zprávách používat pouze + emoji. +emoji_only_mode_title: Režim pouze pro emoji +emoji_only_mode_desc_1: "V chatovacích místnostech můžete povolit režim \"Pouze emoji\"\ + .\nKdyž je tento režim povolen, mohou účastníci posílat pouze emoji (standardní + nebo vlastní emoji kanálu).\nModerátorů se toto omezení netýká.\n" +livechat_configuration_channel_anonymize_moderation_label: Anonymizovat moderátorské + akce +moderator_notes: Moderátorské poznámky +moderator_notes_create_error: Chyba při ukládání poznámky +moderator_note_create: Vytvoření nové poznámky +moderator_note_description: Popis +moderator_note_delete: Smazat poznámku +moderator_note_filters: Vyhledávací filtry +moderator_note_original_nick: Přezdívka účastníka v době vytvoření poznámky +livechat_configuration_channel_command_desc: "Bota můžete nakonfigurovat tak, aby + reagoval na příkazy.\nPříkaz je zpráva začínající znakem \"!\", například \"!help\"\ + , která vyvolá příkaz \"help\".\n" +new_poll: Vytvoření nové ankety +poll: Anketa +poll_title: Nová anketa +poll_vote_instructions: 'Chcete-li hlasovat, klikněte na svou volbu nebo pošlete zprávu + s vykřičníkem a číslem volby (příklad: !1).' +poll_vote_instructions_xmpp: 'Pro hlasování pošlete zprávu s vykřičníkem, za kterou + následuje číslo vaší volby. Příklad: !1' +poll_choice_invalid: Tato volba není platná. +poll_is_over: Tato anketa je nyní u konce. +poll_anonymous_vote_ok: Váš hlas je zohledněn. Hlasy jsou anonymní, nebudou zobrazeny + ostatním účastníkům. +poll_vote_ok: Váš hlas byl vzat v úvahu, počítadla budou za chvíli aktualizována. +livechat_configuration_channel_terms_desc: "Můžete nakonfigurovat zprávu \"podmínky\"\ + , která se zobrazí uživatelům, kteří se připojí k vašim chatovacím místnostem.\n" +search_occupant_message: Vyhledat všechny zprávy +message_search: Hledání zpráv +message_search_original_nick: Přezdívka účastníka v době odeslání zprávy +prosody_firewall_label: Povolit mod_firewall Prosody +prosody_firewall_configure_button: "Konfigurace mod_firewall\n" +prosody_firewall_configuration: Konfigurace mod_firewall Prosody +prosody_firewall_disabled_warning: "Varování: mod_firewall je zakázán v nastavení + pluginu, + pokud chcete, aby byla tato konfigurace zohledněna, musíte ji povolit.\n" +prosody_firewall_file_enabled: Povoleno +prosody_firewall_name: Název +prosody_firewall_name_desc: "Může obsahovat pouze: alfanumerické znaky, podtržítka + a pomlčky.\nSkripty se načítají v abecedním pořadí.\n" +prosody_firewall_content: Obsah souboru +livechat_configuration_channel_command_label: Příkaz Bota +livechat_token_disabled_description: "Uživatelé mohou generovat dlouhodobé tokeny + pro připojení k chatu.\nTyto tokeny lze například použít k zahrnutí chatu do webových + doků OBS.\nDalší informace najdete v dokumentaci.\nTuto funkci můžete zakázat zaškrtnutím tohoto + nastavení.\n" +livechat_configuration_channel_mute_anonymous_desc: "Výchozí hodnota pro nové chatovací + místnosti.\nU stávajících chatovacích místností můžete tuto funkci změnit ve formuláři + pro konfiguraci místnosti.\nKdyž je tato funkce povolena, anonymní uživatelé mohou + chat pouze číst, nikoli však odesílat zprávy.\n" +livechat_configuration_channel_terms_label: Podmínky chatu kanálu +poll_instructions: Vyplněním a odesláním tohoto formuláře vytvoříte novou anketu. + Tím se ukončí a nahradí všechny stávající ankety. +poll_question: Otázka +poll_duration: Doba trvání ankety (v minutách) +moderator_note_delete_confirm: Opravdu chcete tuto poznámku smazat? +moderator_note_create_for_participant: Vytvořit novou poznámku +moderator_note_search_for_participant: Hledání poznámek +emoji_only_mode_desc_2: "Tento režim může být užitečný například:\n
    \n
  • Abyste + zabránili spamu nebo urážlivým zprávám, když zde nejste, abyste je moderovali.
  • \n +
  • Když je příliš mnoho hovořících účastníků a vy už nemůžete správně moderovat.
  • \n\ +
\n" +emoji_only_mode_desc_3: "Chcete-li tento režim povolit nebo zakázat, můžete použít + konfigurační formulář místnosti.\nPokud jej chcete povolit pro všechny své chatovací + místnosti najednou, můžete použít tlačítko níže.\n" +emoji_only_enable_all_rooms: Povolení režimu pouze emoji ve všech chatovacích místnostech + kanálu +livechat_configuration_channel_special_chars_label: Zákaz speciálních znaků +livechat_configuration_channel_special_chars_desc: "Pokud tuto možnost povolíte, moderátor + bude automaticky mazat zprávy obsahující více než X speciálních znaků.\nSpeciální + znaky jsou ty, které nepatří do jedné z těchto kategorií: písmena, číslice, interpunkční + znaménka, symboly měn, emotikony.\n" +livechat_configuration_channel_special_chars_tolerance_label: Tolerance +livechat_configuration_channel_special_chars_tolerance_desc: Počet speciálních znaků, + které lze ve zprávě přijmout, aniž by došlo k jejímu vymazání. +feature_comes_with: Tato funkce je součástí pluginu livechat verze X.X.X. +livechat_configuration_channel_no_duplicate_label: Žádné duplicitní zprávy +livechat_configuration_channel_no_duplicate_desc: "Povolením této možnosti bude moderovací + robot automaticky upravovat duplicitní zprávy.\nTo znamená, že pokud uživatel odešle + stejnou zprávu dvakrát během X sekund, druhá zpráva bude odstraněna.\n" +livechat_configuration_channel_no_duplicate_delay_label: Časový interval +livechat_configuration_channel_no_duplicate_delay_desc: "Interval v sekundách, během + kterého uživatel nemůže znovu odeslat stejnou zprávu.\n" +announcements_message_type: Typ zprávy +announcements_message_type_standard: Standardní +announcements_message_type_announcement: Oznámení +announcements_message_type_highlight: Zvýrazněná +announcements_message_type_warning: Upozornění +poll_anonymous_results: Anonymní výsledky +poll_choice_n: 'Možnost {{N}}:' +poll_end: 'Anketa končí v:' diff --git a/languages/de.yml b/languages/de.yml index f4a54595..047f2803 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -302,8 +302,8 @@ livechat_configuration_channel_desc: Sie können hier einige Optionen für diese einstellen (Moderationsrichtlinien, ...). livechat_configuration_channel_bot_options_title: Optionen für den Moderationsbot livechat_configuration_channel_forbidden_words_label: Verbotene Wörter oder Ausdrücke -livechat_configuration_channel_forbidden_words_reason_label: Grund -livechat_configuration_channel_forbidden_words_reason_desc: Anzuzeigender Grund anstelle +livechat_configuration_channel_retractation_reason_label: Grund +livechat_configuration_channel_retractation_reason_desc: Anzuzeigender Grund anstelle der gelöschen Nachricht livechat_configuration_channel_forbidden_words_regexp_desc: Wenn Sie diese Option aktivieren, können Sie reguläre Ausdrücke (regex) verwenden. @@ -353,11 +353,7 @@ livechat_configuration_channel_quote_delay_desc: "Der Chatbot wird die Nachricht livechat_configuration_channel_command_desc: "Sie können den Chatbot so konfigurieren, dass er auf Befehle reagiert.\nEin Befehl ist eine Nachricht, die mit einem \"!\"\ \ beginnt, wie zum Beispiel \"!help\" den Befehl \"help\" aufruft.\n" -livechat_configuration_channel_forbidden_words_applytomoderators_label: Auch Nachrichten - von Moderatoren moderieren -livechat_configuration_channel_forbidden_words_applytomoderators_desc: "Standardmäßig - werden Nachrichten von Moderatoren nicht gelöscht, wenn sie verbotene Wörter enthalten.\n - Wenn Sie diese Option aktivieren, werden auch Nachrichten von Moderatoren gelöscht.\n" +livechat_configuration_applytomoderators_label: Auch Nachrichten von Moderatoren moderieren invalid_value: Ungültiger Wert. livechat_configuration_channel_forbidden_words_comments_label: Kommentare livechat_configuration_channel_forbidden_words_comments_desc: "Sie können hier einige @@ -601,3 +597,45 @@ prosody_firewall_name_desc: "Darf nur folgende Zeichen enthalten: alphanumerisch geladen.\n" prosody_firewall_content: Dateiinhalt chat: Chat +emoji_only_info: Wenn der Modus "Nur Emoji" aktiviert ist, können Sie nur Emoji in + Ihren Nachrichten verwenden. +emoji_only_mode_title: Nur Emojis-Modus +emoji_only_mode_desc_1: "Sie können in Ihren Chaträumen einen \"Nur-Emoji-Modus\" + aktivieren.\nWenn dieser Modus aktiviert ist, können die Teilnehmer nur Emojis (Standard- + oder kanalangepasste Emojis) senden.\nModeratoren sind von dieser Einschränkung + nicht betroffen.\n" +emoji_only_mode_desc_3: "Um diesen Modus zu aktivieren oder zu deaktivieren, können + Sie das Raumkonfigurationsformular verwenden.\nWenn Sie ihn für alle Ihre Chaträume + auf einmal aktivieren möchten, können Sie die Schaltfläche unten verwenden.\n" +emoji_only_enable_all_rooms: Aktiviere den Modus "Nur Emoji" in allen Chaträumen des + Kanals +emoji_only_mode_desc_2: "Dieser Modus kann zum Beispiel nützlich sein:\n
    \n
  • um + Spam oder beleidigende Nachrichten zu vermeiden, wenn Sie nicht hier sind, um zu + moderieren.
  • \n
  • wenn es zu viele sprechende Teilnehmer gibt, und Sie nicht + mehr richtig moderieren können.
  • \n
\n" +livechat_configuration_applytomoderators_desc: "Standardmäßig sind Nachrichten von + Moderatoren von dieser Funktion nicht betroffen.\nWenn Sie diese Option aktivieren, + werden auch Nachrichten von Moderatoren gelöscht.\n" +livechat_configuration_channel_special_chars_label: Sonderzeichen verbieten +livechat_configuration_channel_special_chars_tolerance_label: Toleranz +livechat_configuration_channel_special_chars_tolerance_desc: Anzahl der Sonderzeichen, + die in einer Nachricht akzeptiert werden, ohne sie zu löschen. +livechat_configuration_channel_special_chars_desc: "Wenn Sie diese Option aktivieren, + wird der Moderationsbot automatisch Nachrichten löschen, die mehr als X Sonderzeichen + enthalten.\nSonderzeichen sind Zeichen, die nicht in eine der folgenden Kategorien + passen: Buchstaben, Zahlen, Satzzeichen, Währungssymbole, Emojis.\n" +feature_comes_with: Diese Funktion wird mit dem Livechatplugin Version X.X.X verfügbar + sein. +livechat_configuration_channel_no_duplicate_label: Keine doppelten Nachrichten +livechat_configuration_channel_no_duplicate_desc: "Wenn Sie diese Option aktivieren, + wird der Chatbot automatisch doppelte Nachrichten moderieren.\nDas heißt, wenn ein + Benutzer die gleiche Nachricht zweimal innerhalb von X Sekunden sendet, wird die + zweite Nachricht gelöscht.\n" +livechat_configuration_channel_no_duplicate_delay_label: Zeitintervall +livechat_configuration_channel_no_duplicate_delay_desc: "Das Intervall in Sekunden, + in dem ein Benutzer die gleiche Nachricht nicht erneut senden kann.\n" +announcements_message_type: Art der Nachricht +announcements_message_type_standard: Standard +announcements_message_type_announcement: Ankündigung +announcements_message_type_highlight: Highlight +announcements_message_type_warning: Warnung diff --git a/languages/en.yml b/languages/en.yml index 505cc906..e14b7604 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -410,8 +410,8 @@ livechat_configuration_channel_forbidden_words_desc: | Several examples are provided on the documentation page. livechat_configuration_channel_forbidden_words_desc2: | One word or expression per line. If you put multiple words on one line, it will only match messages containing the whole sequence. -livechat_configuration_channel_forbidden_words_reason_label: "Reason" -livechat_configuration_channel_forbidden_words_reason_desc: "Reason to display besides +livechat_configuration_channel_retractation_reason_label: "Reason" +livechat_configuration_channel_retractation_reason_desc: "Reason to display besides deleted messages" livechat_configuration_channel_forbidden_words_regexp_label: "Consider as regular expressions" @@ -420,10 +420,9 @@ livechat_configuration_channel_forbidden_words_regexp_desc: "By checking this op livechat_configuration_channel_forbidden_words_label_label: "Label" livechat_configuration_channel_forbidden_words_label_desc: "Label for this forbidden words rule" -livechat_configuration_channel_forbidden_words_applytomoderators_label: "Also moderate - messages from moderators" -livechat_configuration_channel_forbidden_words_applytomoderators_desc: | - By default, moderator messages will not be deleted when containing forbidden words. +livechat_configuration_applytomoderators_label: "Also moderate messages from moderators" +livechat_configuration_applytomoderators_desc: | + By default, moderator messages will not be affected by this feature. By checking this option, messages from moderators will also be deleted. livechat_configuration_channel_forbidden_words_comments_label: "Comments" livechat_configuration_channel_forbidden_words_comments_desc: | @@ -637,3 +636,44 @@ prosody_firewall_name_desc: | Can only contain: alphanumerical characters, underscores and hyphens. Scripts will be loaded in alphabetical order. prosody_firewall_content: File content + +emoji_only_info: Emoji only mode is enabled, you can only use emoji in your messages. +emoji_only_mode_title: Emojis only mode +emoji_only_mode_desc_1: | + You can enable an "Emojy only mode" in your chatrooms. + When this mode is enabled, participants can only send emojis (standard, or channel custom emojis). + Moderators are not affected by this limitation. +emoji_only_mode_desc_2: | + This mode can be usefull for example: +
    +
  • To avoid spam or offensive message when you are not here to moderate.
  • +
  • When there are too many speaking participants, and you can't no more moderate correctly.
  • +
+emoji_only_mode_desc_3: | + To enable or disable this mode, you can use the room configuration form. + If you want to enable it for all your chatrooms at once, you can use the button bellow. +emoji_only_enable_all_rooms: Enable the emoji only mode on all channel's chatrooms + +livechat_configuration_channel_special_chars_label: "Forbid special characters" +livechat_configuration_channel_special_chars_desc: | + By enabling this option, the moderation bot will automatically delete messages containing more than X special characters. + Special characters are those that don't fit into one of these categories: letters, numbers, punctuation symbols, currency symbols, emojis. +livechat_configuration_channel_special_chars_tolerance_label: Tolerance +livechat_configuration_channel_special_chars_tolerance_desc: Number of special characters + to accept in a message without deleting it. + +feature_comes_with: This feature comes with the livechat plugin version X.X.X. + +livechat_configuration_channel_no_duplicate_label: "No duplicate message" +livechat_configuration_channel_no_duplicate_desc: | + By enabling this options, the moderation bot will automatically moderate duplicate messages. + That means if a user send the same message twice within X seconds, the second message will be deleted. +livechat_configuration_channel_no_duplicate_delay_label: Time interval +livechat_configuration_channel_no_duplicate_delay_desc: | + The interval, in seconds, during which a user can't send again the same message. + +announcements_message_type: Message type +announcements_message_type_standard: Standard +announcements_message_type_announcement: Announcement +announcements_message_type_highlight: Highlight +announcements_message_type_warning: Warning diff --git a/languages/es.yml b/languages/es.yml index 854dd306..bde4980f 100644 --- a/languages/es.yml +++ b/languages/es.yml @@ -261,18 +261,15 @@ livechat_configuration_channel_forbidden_words_label: Palabras o expresiones pro livechat_configuration_channel_forbidden_words_desc2: "Una palabra o expresión por línea. Si pones varias palabras en una línea, solo coincidirá con los mensajes que contengan la secuencia completa.\n" -livechat_configuration_channel_forbidden_words_reason_label: Motivo -livechat_configuration_channel_forbidden_words_reason_desc: Motivo para mostrar además +livechat_configuration_channel_retractation_reason_label: Motivo +livechat_configuration_channel_retractation_reason_desc: Motivo para mostrar además de eliminar los mensajes livechat_configuration_channel_forbidden_words_regexp_label: Considéralo como expresiones regulares livechat_configuration_channel_forbidden_words_regexp_desc: Marcando esta opción, puedes usar expresiones regulares. -livechat_configuration_channel_forbidden_words_applytomoderators_label: Moderar también +livechat_configuration_applytomoderators_label: Moderar también los mensajes de los moderadores -livechat_configuration_channel_forbidden_words_applytomoderators_desc: "Por defecto, - los mensajes de los moderadores no se borrarán cuando contengan palabras prohibidas.\n - Al marcar esta opción, los mensajes de los moderadores también se eliminarán.\n" livechat_configuration_channel_forbidden_words_comments_label: Comentarios livechat_configuration_channel_quote_label: Temporizador livechat_configuration_channel_quote_desc: "Puedes configurar varios temporizadores diff --git a/languages/eu.yml b/languages/eu.yml index ab062376..5d89ad8c 100644 --- a/languages/eu.yml +++ b/languages/eu.yml @@ -31,3 +31,4 @@ important_note_title:

Ohar garrantzitsuak

important_note_text: "Osagarriaren dokumentazioa aurki dezakezu hemen:\n\n Peertube Plugin Livechat-en dokumentazioa\n.\n" +chat: Txata diff --git a/languages/fr.yml b/languages/fr.yml index a6a4cba3..e74e7d34 100644 --- a/languages/fr.yml +++ b/languages/fr.yml @@ -315,15 +315,15 @@ livechat_configuration_channel_forbidden_words_label: Mots ou expressions interd livechat_configuration_channel_forbidden_words_desc2: "Un mot ou une expression par ligne. Si vous mettez plusieurs mots sur une même ligne, seuls les messages contenant la séquence entière seront supprimés.\n" -livechat_configuration_channel_forbidden_words_reason_label: Raison -livechat_configuration_channel_forbidden_words_reason_desc: Raison à affiche à côté - des messages supprimés +livechat_configuration_channel_retractation_reason_label: Raison +livechat_configuration_channel_retractation_reason_desc: Raison à affiche à côté des + messages supprimés livechat_configuration_channel_forbidden_words_regexp_label: Considérer comme une expression régulière livechat_configuration_channel_forbidden_words_regexp_desc: En cochant cette option, vous pouvez utiliser des expressions régulières. -livechat_configuration_channel_forbidden_words_applytomoderators_label: Également - modérer les messages des modérateur⋅rices +livechat_configuration_applytomoderators_label: Également modérer les messages des + modérateur⋅rices livechat_configuration_channel_quote_label: Timer livechat_configuration_channel_quote_desc: "Vous pouvez configurer quelques timers qui enverrons des messages à intervalle régulier.\nCes messages seront envoyés par @@ -351,9 +351,9 @@ livechat_configuration_channel_forbidden_words_desc: "Vous pouvez configurer que mots seront instantanément supprimés).\nVous pouvez aussi ajouter une raison optionnelle, qui sera affichée à la place des messages supprimés.\nQuelques exemples de configuration sont fournis sur la page de documentation.\n" -livechat_configuration_channel_forbidden_words_applytomoderators_desc: "Par défaut, - les messages des modérateur⋅rices ne seront pas supprimés quand ils contiennent - des mots interdits.\nEn cochant cette option, leur messages seront également supprimé.\n" +livechat_configuration_applytomoderators_desc: "Par défaut, les messages des modérateur⋅rices + ne seront pas affectés par cette fonctionnalité.\nEn cochant cette option, leur + messages seront également supprimés.\n" livechat_configuration_channel_command_desc: "Vous pouvez configurer le bot pour répondre à des commandes.\nUne commande est un message qui commence par un \"!\", comme par exemple \"!help\" qui appellera la commande \"help\".\n" @@ -620,3 +620,36 @@ prosody_firewall_name_desc: "Ne peut contenir que des caractères alphanumériqu ordre alphabétique.\n" prosody_firewall_content: Contenu du fichier chat: Tchat +feature_comes_with: Cette fonctionnalité arrive avec le plugin livechat version X.X.X. +emoji_only_mode_title: Mode Émojis Uniquement +emoji_only_mode_desc_3: "Pour activer ou désactiver ce mode, vous pouvez utiliser + le formulaire de configuration du salon.\nSi vous souhaitez l'activer pour tous + vos salons de discussion en même temps, vous pouvez utiliser le bouton ci-dessous.\n" +livechat_configuration_channel_special_chars_label: Interdire les caractères spéciaux +livechat_configuration_channel_special_chars_desc: "En activant cette option, le robot + de modération supprimera automatiquement les messages contenant plus de X caractères + spéciaux.\nLes caractères spéciaux sont ceux qui n'entrent pas dans l'une de ces + catégories : lettres, chiffres, symboles de ponctuation, symboles monétaires, émojis.\n" +livechat_configuration_channel_special_chars_tolerance_desc: Nombre de caractères + spéciaux à accepter dans un message avant de le supprimer. +livechat_configuration_channel_special_chars_tolerance_label: Tolérance +livechat_configuration_channel_no_duplicate_delay_label: Intervalle de temps +livechat_configuration_channel_no_duplicate_delay_desc: "Intervalle, en secondes, + pendant lequel un⋅e utilisateur⋅rice ne peut pas renvoyer le même message.\n" +emoji_only_info: Le mode Émoji Uniquement est activé, vous ne pouvez utiliser que + des émoji dans vos messages. +emoji_only_mode_desc_1: "Vous pouvez activer un mode \"Émoji Uniquement\" dans vos + salons de discussion.\nLorsque ce mode est activé, les participant⋅es ne peuvent + envoyer que des émojis (standards ou émojis personnalisés de votre chaîne).\nLes + modérateur⋅rices ne sont pas concerné⋅es par cette limitation.\n" +emoji_only_mode_desc_2: "Ce mode peut être utile par exemple :\n
    \n
  • Pour éviter + le spam ou les messages offensants lorsque vous n'êtes pas là pour modérer.
  • \n\ + \
  • Lorsqu'il y a trop de participant⋅es qui parlent, et que vous ne pouvez plus + modérer correctement.
  • \n
\n" +emoji_only_enable_all_rooms: Activer le mode Émoji Uniquement sur tous les salons + de discussion de la chaîne +livechat_configuration_channel_no_duplicate_label: Pas de message en double +livechat_configuration_channel_no_duplicate_desc: "En activant cette option, le robot + de modération modérera automatiquement les messages en double.\nCela signifie que + si un⋅e utilisateur⋅rice envoie deux fois le même message en l'espace de X secondes, + le deuxième message sera supprimé.\n" diff --git a/languages/hr.yml b/languages/hr.yml index fb96a32b..6e849d5f 100644 --- a/languages/hr.yml +++ b/languages/hr.yml @@ -54,17 +54,13 @@ livechat_configuration_channel_forbidden_words_regexp_label: Tretiraj kao regula izraze livechat_configuration_channel_forbidden_words_regexp_desc: Označavanjem ove opcije možeš koristiti regularne izraze. -livechat_configuration_channel_forbidden_words_applytomoderators_label: Također moderiraj - porukama moderatora +livechat_configuration_applytomoderators_label: Također moderiraj porukama moderatora livechat_configuration_channel_quote_label: Timer livechat_configuration_channel_forbidden_words_desc: "Možeš konfigurirati neke riječi koje će bot automatski moderirati (poruke koje sadrže takve riječi će se odmah izbrisati).\n Možeš dodati i opcionalni razlog koji će se prikazati na mjestu izbrisanih poruka.\n Stranica dokumentacije sadrži nekoliko primjera.\n" -livechat_configuration_channel_forbidden_words_reason_label: Razlog -livechat_configuration_channel_forbidden_words_applytomoderators_desc: "Poruke moderatora - se standardno neće izbrisati ako sadrže zabranjene riječi.\nOznačavanjem ove opcije - će se poruke moderatora također izbrisati.\n" +livechat_configuration_channel_retractation_reason_label: Razlog slow_mode_info: Spori način rada je omogućen. Korisnici mogu slati poruku svakih %1$s sekundi. open_chat: Otvori chat @@ -344,3 +340,88 @@ poll_choice_invalid: Ovaj izbor nije valjan. poll_anonymous_vote_ok: Tvoje se glasanje uzima u obzir. Glasanja su anonimna, neće se prikazati drugim sudionicima. poll_vote_ok: Tvoje se glasanje uzima u obzir. Brojači će se uskoro aktualizirati. +feature_comes_with: Ova je funkcija dostupna s dodatkom za chat uživo verzije X.X.X. +emoji_only_info: Kad je modus „Samo emoji” aktiviran, u svojim porukama možeš koristiti + samo emojije. +emoji_only_mode_title: „Samo emoji” modus +emoji_only_mode_desc_1: "U svojim chat sobama možeš aktivirati „Samo emoji” modus.\n + Kad je taj modus aktiviran, sudionici mogu slati samo emojije (standardne ili prilagođene + emojije kanala).\nOvo ograničenje ne vrijedi za moderatore.\n" +emoji_only_mode_desc_3: "Za aktiviranje ili deaktiviranje ovog modusa možeš koristiti + obrazac za konfiguraciju sobe.\nAko ga želiš aktivirati za sve svoje chat sobe odjednom + koristi donji gumb.\n" +emoji_only_enable_all_rooms: Aktiviraj „Samo emoji” modus u svim chat sobama kanala +task_list_pick_message: "Nakon što odabereš popis zadataka, stvorit će se novi zadatak.\n + Za prikaz zadatka otvori aplikaciju zadataka koristeći gornji izbornik.\nViše informacija + u dokumentaciji dodatka za chat uživo.\n" +livechat_configuration_channel_retractation_reason_desc: Razlog koji se prikazuje + pored izbrisanih poruka +livechat_configuration_applytomoderators_desc: "Ova funkcija standardno neće utjecati + na poruke moderatora.\nOznačavanjem ove opcije će se izbrisati i poruke moderatora.\n" +livechat_configuration_channel_special_chars_label: Zabrani posebne znakove +livechat_configuration_channel_special_chars_tolerance_label: Tolerancija +livechat_configuration_channel_special_chars_tolerance_desc: Dozvoljen broj posebnih + znakova u poruci bez da se poruka izbriše. +livechat_configuration_channel_no_duplicate_label: Bez duplih poruka +livechat_configuration_channel_no_duplicate_delay_label: Vremenski interval +livechat_configuration_channel_no_duplicate_delay_desc: "Interval u sekundama, tijekom + kojeg korisnik ne može ponovo poslati istu poruku.\n" +livechat_configuration_channel_no_duplicate_desc: "Aktiviranjem ove opcije, bot za + moderiranje će automatski moderirati duple poruke.\nTo znači da ako korisnik pošalje + istu poruku dva puta unutar X sekundi, druga će se poruka izbrisati.\n" +livechat_configuration_channel_anonymize_moderation_label: Anonimiziraj radnje moderiranja +livechat_configuration_channel_anonymize_moderation_desc: "Standardna vrijednost za + anonimiziranje radnji moderiranja za nove sobe.\nKada je ovo aktivirano, radnje + moderiranja bit će anonimizirane, kako bi se izbjeglo otkrivanje tko isključuje/izbacuje/… + sudionike.\n" +announcements_message_type: Vrsta poruke +announcements_message_type_standard: Standardna +announcements_message_type_announcement: Najava +announcements_message_type_highlight: Istaknuto +announcements_message_type_warning: Upozorenje +moderator_notes_create_error: Greška prilikom spremanja bilješke +moderator_note_create: Stvori novu bilješku +moderator_note_delete: Izbriši bilješku +moderator_note_description: Opis +moderator_note_delete_confirm: Stvarno želiš izbrisati ovu bilješku? +moderator_note_create_for_participant: Stvori novu bilješku +moderator_note_search_for_participant: Pretraži bilješke +moderator_note_filters: Filtri pretrage +moderator_note_original_nick: Nadimak sudionika u trenutku izrade bilješke +avatar_set_option_none: Bez +search_occupant_message: Pretraži sve poruke +message_search: Pretraživanje poruka +moderator_notes: Bilješke moderiranja +livechat_configuration_channel_mute_anonymous_desc: "Standardna vrijednost za nove + chat sobe.\nZa postojeće chat sobe funkciju možeš promijeniti u obrascu za konfiguraciju + sobe.\nKada je ova funkcija aktivirana, anonimni korisnici mogu samo čitati chat, + ali ne mogu slati poruke.\n" +emoji_only_mode_desc_2: "Ovaj modus može biti koristan na primjer:\n
    \n
  • za + izbjegavanje neželjenih ili uvredljivih poruka kada nisi tu da moderiraš.
  • \n\ + \
  • kada postoji previše sudionika koji govore i ne možeš više ispravno moderirati.
  • \n\ +
\n" +livechat_configuration_channel_special_chars_desc: "Aktiviranjem ove opcije, bot za + moderiranje će automatski izbrisati poruke koje sadrže više od X posebnih znakova.\n + Posebni znakovi su znakovi koji se ne uklapaju u nijednu od ovih kategorija: slova, + brojevi, znakovi interpunkcije, znakovi valuta, emojiji.\n" +message_search_original_nick: Nadimak sudionika kada je poruka poslana +prosody_firewall_label: Aktiviraj Prosody mod_firewall +prosody_firewall_description: "mod_firewall možeš aktivirati na svom Prosody serveru.\n + Za više informacija pročitaj dokumentaciju.\n" +prosody_firewall_configure_button: "Kofiguriraj mod_firewall\n" +prosody_firewall_configuration: Prosody mod_firewall konfiguracija +prosody_firewall_configuration_help: "Ovdje možeš konfigurirati modul Prosody mod_firewall.\n + U nastavku možeš stvoriti više konfiguracijskih datoteka i promijeniti njihov redoslijed.\n + Nemoj se ustručavati dijeliti svoje konfiguracije sa zajednicom (na primjer dodavanjem + nekih primjera u dokumentaciju dodatka).\n" +prosody_firewall_file_enabled: Aktivirano +prosody_firewall_name: Ime +prosody_firewall_content: Sadržaj datoteke +share_chat_dock: Dock +chat: Chat +prosody_firewall_name_desc: "Smije sadržati samo alfanumeričke znakove, podvlake i + crtice.\nSkripta će se učitavati abecednim redom.\n" diff --git a/languages/ja.yml b/languages/ja.yml index ce141fbd..c6964122 100644 --- a/languages/ja.yml +++ b/languages/ja.yml @@ -154,8 +154,6 @@ auto_ban_anonymous_ip_description: "このオプションを有効にすると livechat_configuration_channel_desc: このチャンネルの設定を開始できます(モデレートポリシーなど)。 livechat_configuration_channel_forbidden_words_desc: "Botにより自動的にモデレーションする単語を設定できます(単語が含まれるメッセージは即座に削除されます)。\n\ 削除されたメッセージの箇所に表示する、削除された理由を設定することもできます。\nいくつかの例をドキュメントで提供していますので、必要があれば確認してください。\n" -livechat_configuration_channel_forbidden_words_applytomoderators_desc: "デフォルトでは、モデレーターのメッセージは禁止単語・語句が含まれていても削除されません。\n\ - このオプションを有効にすると、モデレーターからのメッセージも削除されるようになります。\n" save: 保存 prosody_components_interfaces_description: "外部コンポーネント接続のためにリッスンするネットワークインターフェイスです。
\n リッスンするIPのリストをコンマ区切りで入力してください。(スペースは除かれます)
\n全IPv4インタフェースでリッスンする場合は、 «*»、IPv6の場合は、«::» @@ -177,11 +175,11 @@ livechat_configuration_channel_enable_bot_label: モデレーターBotを有効 livechat_configuration_channel_bot_options_title: モデレーターBotの設定 livechat_configuration_channel_forbidden_words_label: 禁止単語または語句 livechat_configuration_channel_forbidden_words_desc2: "単語または語句を1行ごとに記載してください。複数の単語を1行に記載した場合、記載したすべての内容を含むメッセージのみが一致するようになります。\n" -livechat_configuration_channel_forbidden_words_reason_label: 理由 -livechat_configuration_channel_forbidden_words_reason_desc: 削除理由 +livechat_configuration_channel_retractation_reason_label: 理由 +livechat_configuration_channel_retractation_reason_desc: 削除理由 livechat_configuration_channel_forbidden_words_regexp_label: 正規表現 livechat_configuration_channel_forbidden_words_regexp_desc: このオプションを有効にすると、正規表現として処理します。 -livechat_configuration_channel_forbidden_words_applytomoderators_label: モデレーターからのメッセージも対象にする +livechat_configuration_applytomoderators_label: モデレーターからのメッセージも対象にする livechat_configuration_channel_quote_label: タイマー livechat_configuration_channel_quote_desc2: "メッセージ1つに対して1行で入力してください。\n複数のメッセージが入力されている場合、X分おきにランダムに選択されます。\n" livechat_configuration_channel_command_message_label: メッセージ @@ -246,7 +244,7 @@ login_remote_peertube_url: あなたのPeerTubeインスタンスURL login_remote_peertube_url_invalid: 無効なPeerTube URLです。 login_remote_peertube_no_livechat: このPeerTubeインスタンスには、ライブチャットプラグインがインストールされていません。 login_remote_peertube_video_not_found_try_anyway_button: PeerTubeインスタンスで動画を開く -livechat_configuration_channel_anonymize_moderation_label: モデレーション操作を匿名か +livechat_configuration_channel_anonymize_moderation_label: モデレーション操作を匿名化 moderator_notes_create_error: ノートを保存中にエラーが発生しました moderator_note_create: 新規ノートを作成 moderator_note_description: 概要 @@ -377,3 +375,29 @@ invalid_value_duplicate: 重複した値です livechat_configuration_channel_emojis_desc: "チャンネルのカスタム絵文字を設定できます。\nこれらの絵文字は、絵文字ピッカーから利用できます。\n\ 絵文字は、短縮名でも使用できます。(例えば\":shortname:\")\n" chat: チャット +emoji_only_mode_title: 絵文字のみモード +emoji_only_mode_desc_1: "チャットルームで\"絵文字のみモード\"を有効にできます。\nこのモードが有効な時は、参加者は絵文字(標準またはチャンネル専用のカスタム絵文字)のみを送信できます。\n\ + モデレーターはこの制限の影響を受けません。\n" +emoji_only_enable_all_rooms: 絵文字のみモードを全てのチャンネルのチャットルームに適用する +emoji_only_info: 絵文字のみモードが有効な場合、メッセージ内で絵文字のみ使用できます。 +emoji_only_mode_desc_2: "このモードは次のような場合に効果があります:\n
    \n
  • スパムまたはモデレーターがいない場合に攻撃的なメッセージを抑止するため。
  • \n\ + \
  • 多数の参加者が存在し、正確なモデレーションが実施できない場合のため。
  • \n
\n" +livechat_configuration_channel_special_chars_tolerance_label: 許容範囲 +emoji_only_mode_desc_3: "この機能の設定切り替えは、ルーム設定フォームから可能です。\n一度にあなたの全てのチャットルームにこの設定を適用する場合は、以下のボタンをクリックしてください。\n" +livechat_configuration_channel_special_chars_desc: "このオプションを有効にすると、モデレーションBotは、X文字以上の特殊文字が含まれるメッセージを自動的に削除します。\n\ + 特殊文字は、文字、数字、句読点記号、通貨記号、絵文字のいずれにも当てはまらないものを指します。\n" +livechat_configuration_applytomoderators_desc: "初期状態では、モデレーターメッセージはこの機能の影響を受けません。\n\ + このオプションを有効にすると、モデレーターからのメッセージも削除されるようになります。\n" +livechat_configuration_channel_special_chars_label: 特殊文字を禁止する +livechat_configuration_channel_special_chars_tolerance_desc: 削除しない特殊文字の文字数を指定してください。 +feature_comes_with: この機能は、livechatプラグイン バージョン X.X.Xにて登場します。 +livechat_configuration_channel_no_duplicate_delay_label: 間隔 +livechat_configuration_channel_no_duplicate_delay_desc: "ユーザーが同じメッセージを再度送信するために空けなければいけない時間を秒単位で指定してください。\n" +livechat_configuration_channel_no_duplicate_label: 重複したメッセージはありません +livechat_configuration_channel_no_duplicate_desc: "このオプションを有効にすると、モデレーションBotが重複したメッセージに自動的に対応します。\n\ + これは、もしユーザーが同じメッセージX秒以内に2回送信した場合に、2回目のメッセージを削除します。\n" +announcements_message_type: メッセージタイプ +announcements_message_type_standard: 標準 +announcements_message_type_announcement: アナウンス +announcements_message_type_highlight: ハイライト +announcements_message_type_warning: 警告 diff --git a/languages/pl.yml b/languages/pl.yml index 39f24c8f..338b328a 100644 --- a/languages/pl.yml +++ b/languages/pl.yml @@ -61,7 +61,7 @@ task_name: Nazwa zadania avatar_set_option_cat: Koty task_description: Opis task_delete: Usuń zadanie -livechat_configuration_channel_forbidden_words_reason_label: Powód +livechat_configuration_channel_retractation_reason_label: Powód livechat_configuration_channel_forbidden_words_label_label: Etykieta copied: Skopiowano autocolors_label: Automatyczne wykrywanie kolorów @@ -72,3 +72,58 @@ poll: Ankieta poll_question: Pytanie poll_anonymous_results: Anonimowe wyniki poll_choice_n: 'Wybór {{N}}:' +external_auth_custom_oidc_title:

OpenID Connect

+external_auth_custom_oidc_label: Użycie dostawcy OpenID Connect +external_auth_custom_oidc_button_label_label: Etykieta przycisku połączenia +federation_dont_publish_remotely_label: Nie publikuj informacji o czacie +federation_no_remote_chat_description: "Zaznaczenie tego ustawienia spowoduje, że + instancja nigdy nie będzie wyświetlać czatów ze zdalnych filmów.\n" +transparent_background: Przezroczyste tło (do integracji z transmisją, na przykład + z OBS) +external_auth_custom_oidc_button_label_description: Ta etykieta będzie wyświetlana + użytkownikom jako etykieta przycisku do uwierzytelniania u tego dostawcy OIDC. +chat: Czat +external_auth_description: "

Uwierzytelnianie zewnętrzne

\nDla użytkowników, + którzy nie mają konta Peertube, można włączyć różne tryby uwierzytelniania w oparciu + o zdalnych dostawców uwierzytelniania.\n" +external_auth_custom_oidc_description: "Można skonfigurować zewnętrznego dostawcę + OpenID Connect, który może być używany do logowania się do czatu.\nWięcej informacji + można znaleźć w dokumentacji:\nUstawienia.\n" +chat_terms_label: Regulamin +chat_terms_description: "Poniższy regulamin będzie wyświetlany wszystkim użytkownikom + po dołączeniu do pokojów rozmów.\nStreamerzy mogą również skonfigurować swoje regulaminy + dla swoich kanałów, które będą wyświetlane zaraz po tych globalnych zasadach i warunkach.\n" +use_current_theme_color: Użyj bieżących kolorów motywu +federation_dont_publish_remotely_description: "Zaznaczenie tego ustawienia spowoduje, + że Twoja instancja nie będzie publikować informacji o czacie na fediwersum.\nZdalne + instancje Peertube nie będą wiedziały, że są czatami powiązanymi z Twoimi filmami.
\n + Uwaga: jeśli już istnieją czaty, możliwe, że informacje zostały już opublikowane.\n + Będziesz musiał poczekać na następną aktualizację wideo, zanim informacje zostaną + cofnięte.\nPonadto, jeśli wyłączysz to ustawienie, będziesz musiał poczekać na aktualizację + filmów, zanim informacje\nzostaną ponownie opublikowane. Aktualizacja ta następuje + między innymi po wznowieniu lub zakończeniu transmisji na żywo.
\nUwaga: + to ustawienie wpływa tylko na publikację informacji za pośrednictwem protokołu ActivityPub.\n + Nie zapobiegnie ono wykryciu obecności czatu i próby połączenia się z nim przez + zdalną aplikację.\n" +tips_for_streamers: "Wskazówki dla streamerów: Aby osadzić czat w swojej transmisji, + np. w OBS,\nwygeneruj link tylko do odczytu i użyj go jako źródła przeglądarki.\n" +generate_iframe: Generuj kod iframe, aby osadzić czat na stronie internetowej +chat_for_live_stream: 'Czat transmisji:' +web: Przeglądarka +connect_using_xmpp_help: Z pokojem można połączyć się za pomocą zewnętrznego konta + XMPP i ulubionego klienta XMPP. +important_note_text: "Dokumentację wtyczki można znaleźć tutaj:\n\n Peertube Plugin Livechat documentation\n.\n" +diagnostic: "Przed zwróceniem się o pomoc, skorzystaj z narzędzia diagnostycznego:\n + Uruchom diagnostykę\n + (jeśli ten przycisk nie otwiera nowego okna, spróbuj odświeżyć stronę).\n" +federation_no_remote_chat_label: Nie wyświetlaj zdalnych czatów +federation_description: "

Federacja

\nPoniższe ustawienia dotyczą federacji + z innymi instancjami Peertube,\ni innym oprogramowaniem fediwersum.\n" +room_type_option_video: Każdy film ma swój własny pokój rozmowy +room_type_description: Możesz tutaj wybrać oddzielne pokoje dla każdego filmu lub + pogrupować je według kanałów. +room_type_option_channel: Pokoje rozmów internetowych są pogrupowane według kanałów +auto_display_label: Automatycznie otwórz rozmowę +auto_display_description: Podczas oglądania filmu okno rozmów otworzy się automatycznie. diff --git a/languages/sq.yml b/languages/sq.yml index acd56b38..e9104cfc 100644 --- a/languages/sq.yml +++ b/languages/sq.yml @@ -87,7 +87,7 @@ prosody_muc_expiration_description: "Këtu mund të zgjidhni se për sa kohë mb të ruhet për 1 vit. 1-shin mund ta zëvendësoni me çfarëdo vlere numër të plotë.\n
  • never: lënda nuk skadon kurrë dhe do të mbahet përgjithnjë.
  • \n\ \n" -livechat_configuration_channel_forbidden_words_reason_label: Arsye +livechat_configuration_channel_retractation_reason_label: Arsye livechat_configuration_channel_forbidden_words_comments_label: Komente livechat_configuration_channel_quote_label2: Mesazhe livechat_configuration_channel_command_message_desc: Mesazhi për t’u dërguar. @@ -246,3 +246,7 @@ poll_anonymous_vote_ok: Vota juaj është marrë parasysh. Votat janë anonime, poll_vote_ok: Vota juaj është marrë parasysh, numëratorët do të përditësohen në çast. moderator_notes: Shënime moderimi chat: Fjalosje +converse_theme_option_cyberpunk: Temë ConverseJS Cyberpunk +livechat_configuration_channel_special_chars_tolerance_desc: Numër shenjash speciale + për t’u pranuar në një mesazh, pa e fshirë atë. +announcements_message_type: Lloj mesazhi diff --git a/languages/sv.yml b/languages/sv.yml index 3ed89487..053cf1a9 100644 --- a/languages/sv.yml +++ b/languages/sv.yml @@ -37,7 +37,7 @@ menu_configuration_label: Chattrum livechat_configuration_title: Anpassa din sändnings chattrum livechat_configuration_channel_title: Kanalinställningar livechat_configuration_channel_forbidden_words_label: Förbjudna ord och uttryck -livechat_configuration_channel_forbidden_words_reason_label: Anledning +livechat_configuration_channel_retractation_reason_label: Anledning livechat_configuration_channel_quote_label: Timer livechat_configuration_channel_quote_delay_label: Skicka var X:e minut livechat_configuration_channel_command_message_desc: Meddelandet som ska skickas. diff --git a/languages/zh-Hant.yml b/languages/zh-Hant.yml index 6f2e048d..d656a591 100644 --- a/languages/zh-Hant.yml +++ b/languages/zh-Hant.yml @@ -59,12 +59,12 @@ task_list_pick_title: 請選擇任務清單 promote: 成為版主 livechat_configuration_channel_emojis_title: 頻道emojis livechat_configuration_channel_bot_options_title: 審核機器人選項 -livechat_configuration_channel_forbidden_words_reason_label: 原因 +livechat_configuration_channel_retractation_reason_label: 原因 livechat_configuration_channel_command_message_desc: 發送訊息。 slow_mode_info: 限速模式已啟用,使用者可以每 %1$s 秒發送一則訊息。 disable_channel_configuration_label: 停用進階頻道設定和聊天機器人 cancel: 取消 -livechat_configuration_channel_forbidden_words_reason_desc: 除已刪除訊息外還顯示的原因 +livechat_configuration_channel_retractation_reason_desc: 除已刪除訊息外還顯示的原因 error: 錯誤 use_current_theme_color: 使用當前主題顏色 chat_title:

    聊天

    diff --git a/package-lock.json b/package-lock.json index 1137c37c..8ffed1a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,77 +1,67 @@ { "name": "peertube-plugin-livechat", - "version": "11.0.1", + "version": "12.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "peertube-plugin-livechat", - "version": "11.0.1", + "version": "12.0.0", "license": "AGPL-3.0", "dependencies": { "@xmpp/jid": "^0.13.1", - "async": "^3.2.2", - "decache": "^4.6.0", + "async": "^3.2.6", + "decache": "^4.6.2", "escape-html": "^1.0.3", - "got": "^11.8.2", + "got": "^11.8.6", "http-proxy": "^1.18.1", "log-rotate": "^0.2.8", - "openid-client": "^5.6.5", - "validate-color": "^2.2.1", - "xmppjs-chat-bot": "^0.3.0" + "openid-client": "^5.7.0", + "validate-color": "^2.2.4", + "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { + "@eslint/js": "^9.16.0", "@lit-labs/motion": "^1.0.7", - "@lit/context": "^1.1.1", - "@lit/task": "^1.0.0", - "@peertube/feed": "^5.1.0", + "@lit/context": "^1.1.3", + "@lit/task": "^1.0.1", + "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@tsconfig/node12": "^1.0.9", - "@types/async": "^3.2.9", + "@stylistic/eslint-plugin": "^2.11.0", + "@tsconfig/node16": "^16.1.3", + "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", - "@types/express": "^4.17.13", + "@types/eslint__js": "^8.42.3", + "@types/express": "^5.0.0", "@types/got": "^9.6.12", - "@types/http-proxy": "^1.17.9", - "@types/node": "^16.11.6", + "@types/http-proxy": "^1.17.15", + "@types/node": "^16.18.121", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", - "@typescript-eslint/eslint-plugin": "^4.29.0", - "@typescript-eslint/parser": "^4.29.0", - "commander": "^11.0.0", - "esbuild": "^0.16.1", - "eslint": "^7.32.0", - "eslint-config-standard": "^16.0.3", - "eslint-config-standard-with-typescript": "^20.0.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-lit": "^1.13.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.1", - "eslint-plugin-standard": "^5.0.0", - "lit": "^2.4.0", - "lit-analyzer": "^1.2.1", + "@typescript-eslint/parser": "^8.4.0", + "commander": "^12.1.0", + "esbuild": "^0.24.0", + "eslint": "^8.57.1", + "eslint-config-love": "^84.1.1", + "eslint-plugin-lit": "^1.15.0", + "globals": "^15.13.0", + "lit": "^3.2.1", + "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.43.4", - "sharp": "^0.33.2", - "stylelint": "^14.0.1", - "stylelint-config-recommended-scss": "^5.0.1", - "stylelint-config-standard-scss": "^2.0.1", - "svgo": "^2.8.0", - "typescript": "^4.9.5", - "yaml": "^2.2.1" + "sass": "^1.81.1", + "sharp": "^0.33.5", + "stylelint": "^16.11.0", + "stylelint-config-recommended-scss": "^14.1.0", + "stylelint-config-standard-scss": "^13.1.0", + "svgo": "^3.3.2", + "typescript": "^5.5.4", + "typescript-eslint": "^8.17.0", + "yaml": "^2.6.1" }, "engines": { "npm": ">=7" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -98,12 +88,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/crc32/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-crypto/crc32c": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", @@ -115,12 +99,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/crc32c/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-crypto/sha1-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", @@ -173,12 +151,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", @@ -232,12 +204,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", @@ -252,12 +218,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", @@ -267,12 +227,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-crypto/util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", @@ -322,12 +276,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-crypto/util/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/client-s3": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.637.0.tgz", @@ -397,12 +345,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/client-sso": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.637.0.tgz", @@ -505,18 +447,6 @@ "@aws-sdk/client-sts": "^3.637.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, - "node_modules/@aws-sdk/client-sso/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/client-sts": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.637.0.tgz", @@ -568,12 +498,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/core": { "version": "3.635.0", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.635.0.tgz", @@ -595,12 +519,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/core/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/credential-provider-env": { "version": "3.620.1", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", @@ -616,12 +534,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.635.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.635.0.tgz", @@ -642,12 +554,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.637.0.tgz", @@ -673,12 +579,6 @@ "@aws-sdk/client-sts": "^3.637.0" } }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/credential-provider-node": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.637.0.tgz", @@ -702,12 +602,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/credential-provider-process": { "version": "3.620.1", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", @@ -724,12 +618,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.637.0.tgz", @@ -748,12 +636,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.621.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", @@ -772,12 +654,6 @@ "@aws-sdk/client-sts": "^3.621.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { "version": "3.620.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", @@ -796,12 +672,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-expect-continue": { "version": "3.620.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", @@ -817,12 +687,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-flexible-checksums": { "version": "3.620.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", @@ -842,12 +706,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-host-header": { "version": "3.620.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", @@ -863,12 +721,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-location-constraint": { "version": "3.609.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", @@ -883,12 +735,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.609.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", @@ -903,12 +749,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.620.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", @@ -924,12 +764,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-sdk-s3": { "version": "3.635.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.635.0.tgz", @@ -955,12 +789,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-ssec": { "version": "3.609.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", @@ -975,12 +803,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-ssec/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.637.0.tgz", @@ -997,12 +819,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.614.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", @@ -1020,12 +836,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.635.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.635.0.tgz", @@ -1043,12 +853,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/token-providers": { "version": "3.614.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", @@ -1068,12 +872,6 @@ "@aws-sdk/client-sso-oidc": "^3.614.0" } }, - "node_modules/@aws-sdk/token-providers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/types": { "version": "3.609.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", @@ -1087,12 +885,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/util-arn-parser": { "version": "3.568.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz", @@ -1105,12 +897,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-arn-parser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/util-endpoints": { "version": "3.637.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.637.0.tgz", @@ -1126,12 +912,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.568.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", @@ -1144,12 +924,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.609.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", @@ -1162,12 +936,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.614.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", @@ -1191,12 +959,6 @@ } } }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@aws-sdk/xml-builder": { "version": "3.609.0", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz", @@ -1210,12 +972,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/xml-builder/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@babel/cli": { "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.9.tgz", @@ -1261,12 +1017,15 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { @@ -1306,18 +1065,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/core/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1518,9 +1265,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } @@ -1547,13 +1294,14 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -1675,18 +1423,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/traverse": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", @@ -1707,18 +1443,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/traverse/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1770,20 +1494,68 @@ "node": ">=0.1.90" } }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.10" + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@dabh/diagnostics": { @@ -1797,27 +1569,46 @@ "kuler": "^2.0.0" } }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/@emnapi/runtime": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-0.45.0.tgz", - "integrity": "sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", "dev": true, "optional": true, "dependencies": { "tslib": "^2.4.0" } }, - "node_modules/@emnapi/runtime/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], "dev": true, - "optional": true + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } }, "node_modules/@esbuild/android-arm": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.2.tgz", - "integrity": "sha512-t8zq/Ad8njye3tYkbdBYAEGBExCyqFuPnKmKgLBF9+nIwAS/V3FYck6BjAx813JCGXkNsR1iriS8jQFwydT+FA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", "cpu": [ "arm" ], @@ -1827,13 +1618,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.2.tgz", - "integrity": "sha512-3CjbygjFHmtxDW59FOUM1T28G+aVqzbM+cNNinMgRUq+bmAstJdqmJL/KqpUwuCRTri4BgHJRWQbHOQFLwIpxw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "cpu": [ "arm64" ], @@ -1843,13 +1634,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.2.tgz", - "integrity": "sha512-J5pzzVs9gHRQff8vUBhGMRQU1avwD9IVTSfzhdnKRqlxq0hsdcgZxH95Ckj/q2KJ4nMPYfDBSRXrrvQ4PyMpFA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "cpu": [ "x64" ], @@ -1859,13 +1650,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.2.tgz", - "integrity": "sha512-XmjlYmR1UTEdMT2X3TxnA0hG8zOi3q/BzqNN6/PDBxw/UxE9gdj7LGwiQus5HHZM03vSvjRO7WJ7qaJBGBWnpQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "cpu": [ "arm64" ], @@ -1875,13 +1666,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.2.tgz", - "integrity": "sha512-nq5cXgzbXHhBqZEPpuXrf2+BV6QWUM8vAyT/ElJrdIkoGOHwNQJEqZHl3KOWK+1V3KXEXgJhh7DsLixIc677ZQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", "cpu": [ "x64" ], @@ -1891,13 +1682,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.2.tgz", - "integrity": "sha512-1QuZr7GnoipDYMFJDucqXmVvJZidZuHbvw5QLzBehYq67GR1Jub9pSo6O0Rt4LtKnu3TF2K/bjgzPJAGFY6W4Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "cpu": [ "arm64" ], @@ -1907,13 +1698,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.2.tgz", - "integrity": "sha512-uvbv99Wg2T489bqUz4gYVb2IpSSZZP/uTkaZpaLN+h3x58FmsLT4o7bF1Refd2JIKuONxSobljlk5/K/RD9SsQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", "cpu": [ "x64" ], @@ -1923,13 +1714,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.2.tgz", - "integrity": "sha512-8n2UozHygOGXzgysim6GifKjv+lW4fs3mlfaoKerwBIOT9OBCo1Q4AjvbtU3F+2AGyo8eavxnj6Xxx0DRTOwiw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "cpu": [ "arm" ], @@ -1939,13 +1730,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.2.tgz", - "integrity": "sha512-S7EwMhEUMzYfd9KTHJX7Y3bKz7/9sZDRJPp10EOQ3Qqp10WvX2G42Q2c7rfymnm9aM5ZWs+W8WgbLFAUnjC3Wg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "cpu": [ "arm64" ], @@ -1955,13 +1746,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.2.tgz", - "integrity": "sha512-TRz3MDvv65zXZ4NTJYi1yyVj17Qrsm8y6J8r4qIdd2qszRLPHmte4LAazPa7g+To6QfM2kL3gHmVhwV6GcYz0g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "cpu": [ "ia32" ], @@ -1971,13 +1762,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.2.tgz", - "integrity": "sha512-yhHJCvPQjh/8wLEk336QzXMHYnMKJdzLcNAnXwVawSvsLqyzTYrGshrO1YMhzs5cWgR75DFNnhcAFgEtleAZOw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", "cpu": [ "loong64" ], @@ -1987,13 +1778,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.2.tgz", - "integrity": "sha512-YwMpV41qIKRHASV4MaaA/PKk9CoZ4QyVyPXhUtLTO9kPWtWECRI4MTBrGIb9kGUpL6I+jiT4fAZn8YpWSGBkQg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", "cpu": [ "mips64el" ], @@ -2003,13 +1794,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.2.tgz", - "integrity": "sha512-s4YuINcRxCA9TElEf2iBdG6oZWdNu2Eb6R9TbRBcZOTdcgdBKIinaVyEiQ8H6nmCafWCuuJT8u66zds2ET3t1Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "cpu": [ "ppc64" ], @@ -2019,13 +1810,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.2.tgz", - "integrity": "sha512-oacL6QGqVRhBCbBlFxODYfcCkB6tPmfanaWnsuHNI7m9LVkBuuDKpsC3XWOwkEQiLIJcvhhZKOkkgw49KxS1Dw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "cpu": [ "riscv64" ], @@ -2035,13 +1826,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.2.tgz", - "integrity": "sha512-5ifr0lshZbLI457Qe6y3MsDYv1cSOJ8awgi0HT14cS59WliT7bDkrr3kmDw/LqGOAPyDvDD+U8s2cFBSENetuA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", "cpu": [ "s390x" ], @@ -2051,13 +1842,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.2.tgz", - "integrity": "sha512-TA/ORYlP6h2pfB/dzrPTMFWd1MaUYy7kwblWdzwkUtsTAJAKJlZwBhkKftSaUNNU5wtXNJ9+ucMDf7vBPbDjlw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "cpu": [ "x64" ], @@ -2067,13 +1858,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.2.tgz", - "integrity": "sha512-oBH2Aj4fL9FLlkIi2wYGckydKHVKmYrqiqt91i6kFE1mF7B05YYttrlOHAf3JzWIJQWyvzvsmoA/XFPf1sTgBw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", "cpu": [ "x64" ], @@ -2083,13 +1874,29 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.2.tgz", - "integrity": "sha512-eKOpYr7CiF9GZxu18iOQGfzQ4htO6KGhXriW2raJvRO0G27Lu7ArAI/kW71yTPaFqlf9gCmCGaTPr2tmiUePVg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", "cpu": [ "x64" ], @@ -2099,13 +1906,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.2.tgz", - "integrity": "sha512-1HsQLVnjhlscekE8H5Xj49xPvd0c74eoZEjh+OUnr+x7vCXdTVdFDgao9QM0H9zfioxJN1ZH7534LwxEaAWaIA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "cpu": [ "x64" ], @@ -2115,13 +1922,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.2.tgz", - "integrity": "sha512-G9AWjsnVxGQj8z0WgaDwTKgXzwc9zLPYDFoLE4oAGI/TQnft0eQjc+CKiWRyoa+a/c3XIFGXoWnW+17kbibSfA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "cpu": [ "arm64" ], @@ -2131,13 +1938,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.2.tgz", - "integrity": "sha512-UJqmfPsiSX/wP1kY5JMordRqNU2r8n8ieXmNimp4r35sQEX3bjnSkPJ2E8BM8W8ecmEL+oDjYjulkTT3zSPa1g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "cpu": [ "ia32" ], @@ -2147,13 +1954,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.2.tgz", - "integrity": "sha512-1+PQiGAbbGlIXXlp9i/5JRpodCsozGTjffaD4W1LgeoynWef38VD8NNC8yG366NYXHHHLR1pN6MQZ9r2na/S1A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ "x64" ], @@ -2163,36 +1970,63 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2203,42 +2037,58 @@ } } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">= 4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/@eslint/js": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2250,21 +2100,35 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz", - "integrity": "sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", "cpu": [ "arm64" ], @@ -2274,23 +2138,19 @@ "darwin" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.1" + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.2.tgz", - "integrity": "sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", "cpu": [ "x64" ], @@ -2300,23 +2160,19 @@ "darwin" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.1" + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", "cpu": [ "arm64" ], @@ -2325,20 +2181,14 @@ "os": [ "darwin" ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.1.tgz", - "integrity": "sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", "cpu": [ "x64" ], @@ -2347,20 +2197,14 @@ "os": [ "darwin" ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.1.tgz", - "integrity": "sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", "cpu": [ "arm" ], @@ -2369,20 +2213,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.1.tgz", - "integrity": "sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", "cpu": [ "arm64" ], @@ -2391,20 +2229,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.1.tgz", - "integrity": "sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", "cpu": [ "s390x" ], @@ -2413,20 +2245,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.1.tgz", - "integrity": "sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", "cpu": [ "x64" ], @@ -2435,20 +2261,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.1.tgz", - "integrity": "sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", "cpu": [ "arm64" ], @@ -2457,20 +2277,14 @@ "os": [ "linux" ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.1.tgz", - "integrity": "sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", "cpu": [ "x64" ], @@ -2479,20 +2293,14 @@ "os": [ "linux" ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.2.tgz", - "integrity": "sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", "cpu": [ "arm" ], @@ -2502,23 +2310,19 @@ "linux" ], "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.1" + "@img/sharp-libvips-linux-arm": "1.0.5" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.2.tgz", - "integrity": "sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", "cpu": [ "arm64" ], @@ -2528,23 +2332,19 @@ "linux" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.1" + "@img/sharp-libvips-linux-arm64": "1.0.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.2.tgz", - "integrity": "sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", "cpu": [ "s390x" ], @@ -2554,23 +2354,19 @@ "linux" ], "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.1" + "@img/sharp-libvips-linux-s390x": "1.0.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.2.tgz", - "integrity": "sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", "cpu": [ "x64" ], @@ -2580,23 +2376,19 @@ "linux" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.1" + "@img/sharp-libvips-linux-x64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.2.tgz", - "integrity": "sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", "cpu": [ "arm64" ], @@ -2606,23 +2398,19 @@ "linux" ], "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1" + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.2.tgz", - "integrity": "sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", "cpu": [ "x64" ], @@ -2632,45 +2420,38 @@ "linux" ], "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.1" + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.2.tgz", - "integrity": "sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", "cpu": [ "wasm32" ], "dev": true, "optional": true, "dependencies": { - "@emnapi/runtime": "^0.45.0" + "@emnapi/runtime": "^1.2.0" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.2.tgz", - "integrity": "sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", "cpu": [ "ia32" ], @@ -2680,19 +2461,16 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.2.tgz", - "integrity": "sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", "cpu": [ "x64" ], @@ -2702,10 +2480,7 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" @@ -2769,37 +2544,6 @@ "lit": "^3.1.2" } }, - "node_modules/@lit-labs/motion/node_modules/lit": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.3.tgz", - "integrity": "sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==", - "dev": true, - "dependencies": { - "@lit/reactive-element": "^2.0.4", - "lit-element": "^4.0.4", - "lit-html": "^3.1.2" - } - }, - "node_modules/@lit-labs/motion/node_modules/lit-element": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.5.tgz", - "integrity": "sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==", - "dev": true, - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.2.0", - "@lit/reactive-element": "^2.0.4", - "lit-html": "^3.1.2" - } - }, - "node_modules/@lit-labs/motion/node_modules/lit-html": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.3.tgz", - "integrity": "sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==", - "dev": true, - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, "node_modules/@lit-labs/ssr-dom-shim": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", @@ -2807,9 +2551,9 @@ "dev": true }, "node_modules/@lit/context": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.1.tgz", - "integrity": "sha512-q/Rw7oWSJidUP43f/RUPwqZ6f5VlY8HzinTWxL/gW1Hvm2S5q2hZvV+qM8WFcC+oLNNknc3JKsd5TwxLk1hbdg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.3.tgz", + "integrity": "sha512-Auh37F4S0PZM93HTDfZWs97mmzaQ7M3vnTc9YvxAGyP3UItSK/8Fs0vTOGT+njuvOwbKio/l8Cx/zWL4vkutpQ==", "dev": true, "dependencies": { "@lit/reactive-element": "^1.6.2 || ^2.0.0" @@ -2825,27 +2569,14 @@ } }, "node_modules/@lit/task": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lit/task/-/task-1.0.0.tgz", - "integrity": "sha512-7jocGBh3yGlo3kKxQggZph2txK4X5GYNWp2FAsmV9u2spzUypwrzRzXe8I72icAb02B00+k2nlvxVcrQB6vyrw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@lit/task/-/task-1.0.1.tgz", + "integrity": "sha512-fVLDtmwCau8NywnFIXaJxsCZjzaIxnVq+cFRKYC1Y4tA4/0rMTvF6DLZZ2JE51BwzOluaKtgJX8x1QDsQtAaIw==", "dev": true, "dependencies": { "@lit/reactive-element": "^1.0.0 || ^2.0.0" } }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", @@ -3053,10 +2784,297 @@ "node": ">=14" } }, + "node_modules/@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/@peertube/feed": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@peertube/feed/-/feed-5.1.0.tgz", - "integrity": "sha512-ggwIbjxh4oc1aAGYV7ZxtIpiEIGq3Rkg6FxvOSrk/EPZ76rExoIJCjKeSyd4zb/sGkyKldy+bGs1OUUVidWWTQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@peertube/feed/-/feed-5.1.3.tgz", + "integrity": "sha512-73eRzZnpYBZMNS4FOsDjCfiu2CM60lCO1o3En/AB+LthYUd1dXEOG36PwQLMVlujAcHgQmGXdk08PMAUMj/Pug==", "dev": true, "dependencies": { "xml-js": "^1.6.11" @@ -3139,6 +3157,12 @@ "node": "14 || >=16.14" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz", @@ -3163,12 +3187,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/abort-controller/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/chunked-blob-reader": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", @@ -3188,18 +3206,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/chunked-blob-reader-native/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, - "node_modules/@smithy/chunked-blob-reader/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/config-resolver": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", @@ -3216,12 +3222,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/config-resolver/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/core": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz", @@ -3243,12 +3243,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/credential-provider-imds": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", @@ -3265,12 +3259,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/eventstream-codec": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", @@ -3283,12 +3271,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/eventstream-codec/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/eventstream-serde-browser": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.6.tgz", @@ -3303,12 +3285,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/eventstream-serde-config-resolver": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", @@ -3322,12 +3298,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/eventstream-serde-node": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.5.tgz", @@ -3342,12 +3312,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/eventstream-serde-universal": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.5.tgz", @@ -3362,12 +3326,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/fetch-http-handler": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", @@ -3381,12 +3339,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/hash-blob-browser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz", @@ -3399,12 +3351,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/hash-blob-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/hash-node": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", @@ -3420,12 +3366,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/hash-stream-node": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz", @@ -3440,12 +3380,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-stream-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/invalid-dependency": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", @@ -3456,12 +3390,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/invalid-dependency/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/is-array-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", @@ -3474,12 +3402,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/is-array-buffer/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/md5-js": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz", @@ -3491,12 +3413,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/md5-js/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/middleware-content-length": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", @@ -3511,12 +3427,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/middleware-endpoint": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", @@ -3535,12 +3445,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/middleware-retry": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz", @@ -3561,12 +3465,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/middleware-retry/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -3593,12 +3491,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-serde/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/middleware-stack": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", @@ -3612,12 +3504,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-stack/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/node-config-provider": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", @@ -3633,12 +3519,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/node-config-provider/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/node-http-handler": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", @@ -3655,12 +3535,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/node-http-handler/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/property-provider": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", @@ -3674,12 +3548,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/property-provider/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/protocol-http": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", @@ -3693,12 +3561,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/protocol-http/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/querystring-builder": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", @@ -3713,12 +3575,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/querystring-builder/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/querystring-parser": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", @@ -3732,12 +3588,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/querystring-parser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/service-error-classification": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", @@ -3763,12 +3613,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/signature-v4": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", @@ -3788,12 +3632,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/signature-v4/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/smithy-client": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz", @@ -3811,12 +3649,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/smithy-client/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/types": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", @@ -3829,12 +3661,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/types/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/url-parser": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", @@ -3846,12 +3672,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/url-parser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-base64": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", @@ -3866,12 +3686,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-base64/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-body-length-browser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", @@ -3881,12 +3695,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-body-length-node": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", @@ -3899,12 +3707,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-body-length-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-buffer-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", @@ -3918,12 +3720,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-buffer-from/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-config-provider": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", @@ -3936,12 +3732,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-config-provider/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz", @@ -3958,12 +3748,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-defaults-mode-node": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz", @@ -3982,12 +3766,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-endpoints": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", @@ -4002,12 +3780,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-endpoints/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-hex-encoding": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", @@ -4020,12 +3792,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-middleware": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", @@ -4039,12 +3805,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-middleware/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-retry": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", @@ -4059,12 +3819,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-retry/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-stream": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", @@ -4084,12 +3838,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-stream/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-uri-escape": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", @@ -4102,12 +3850,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-uri-escape/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", @@ -4121,12 +3863,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-utf8/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@smithy/util-waiter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", @@ -4141,18 +3877,72 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/util-waiter/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, + "node_modules/@stylistic/eslint-plugin": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.11.0.tgz", + "integrity": "sha512-PNRHbydNG5EH8NK4c+izdJlxajIR6GxcUhzsYNRsn6Myep4dsZt0qFCz3rCPnkvgO5FYibDcMqgNHUT+zvjYZw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", @@ -4173,16 +3963,16 @@ "node": ">=10.13.0" } }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "node_modules/@tsconfig/node16": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.3.tgz", + "integrity": "sha512-9nTOUBn+EMKO6rtSZJk+DcqsfgtlERGT9XPJ5PRj/HNENPCBY1yu/JEj5wT6GLtbCLBO2k46SeXDaY0pjMqypw==", "dev": true }, "node_modules/@types/async": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.9.tgz", - "integrity": "sha512-5Jx7ifieGrZq5qtKfZfQ/7o43eC7rkAURHEZYa4DUwydToHLgMdIpMseNmYvf+BdgIDCARo+LxlBz9LDAXAwNg==", + "version": "3.2.24", + "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.24.tgz", + "integrity": "sha512-8iHVLHsCCOBKjCF2KwFe0p9Z3rfM9mL+sSP8btyR5vTjJRAqpBYD28/ZLgXPf0pjG1VxOvtCV/BgXkQbpSe8Hw==", "dev": true }, "node_modules/@types/bluebird": { @@ -4251,27 +4041,53 @@ "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==", "dev": true }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "dev": true, + "dependencies": { + "@types/eslint": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", + "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^5.0.0", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz", + "integrity": "sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/fluent-ffmpeg": { @@ -4310,18 +4126,18 @@ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" }, "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/json5": { @@ -4359,12 +4175,6 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, "node_modules/@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -4381,21 +4191,9 @@ } }, "node_modules/@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "version": "16.18.121", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.121.tgz", + "integrity": "sha512-Gk/pOy8H0cvX8qNrwzElYIECpcUn87w4EAEFXFvPJ8qsP9QR/YqukUORSy0zmyDyvdo149idPpy4W6iC5aSbQA==" }, "node_modules/@types/qs": { "version": "6.9.7", @@ -4417,6 +4215,16 @@ "@types/node": "*" } }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -4462,29 +4270,31 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.0.tgz", - "integrity": "sha512-eiREtqWRZ8aVJcNru7cT/AMVnYd9a2UHsfZT8MR1dW3UUEg6jDv9EQ9Cq4CUPZesyQ58YUpoAADGv71jY8RwgA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz", + "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.29.0", - "@typescript-eslint/scope-manager": "4.29.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/type-utils": "8.17.0", + "@typescript-eslint/utils": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4492,106 +4302,27 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.0.tgz", - "integrity": "sha512-FpNVKykfeaIxlArLUP/yQfv/5/3rhl1ov6RWgud4OgbqWLkEq7lqgQU9iiavZRzpzCRQV4XddyFz3wFXdkiX9w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.29.0", - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/typescript-estree": "4.29.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.0.tgz", - "integrity": "sha512-+92YRNHFdXgq+GhWQPT2bmjX09X7EH36JfgN2/4wmhtwV/HPxozpCNst8jrWcngLtEVd/4zAwA6BKojAlf+YqA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", + "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.29.0", - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/typescript-estree": "4.29.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4600,12 +4331,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4617,35 +4348,85 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.0.tgz", - "integrity": "sha512-HPq7XAaDMM3DpmuijxLV9Io8/6pQnliiXMQUcAdjpJJSR+fdmbD/zHCd7hMkjJn04UQtCQBtshgxClzg6NIS2w==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", + "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/visitor-keys": "4.29.0" + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz", + "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/utils": "8.17.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/@typescript-eslint/types": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.0.tgz", - "integrity": "sha512-2YJM6XfWfi8pgU2HRhTp7WgRw78TCRO3dOmSpAvIQ8MOv4B46JD2chnhpNT7Jq8j0APlIbzO1Bach734xxUl4A==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", + "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4653,21 +4434,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.0.tgz", - "integrity": "sha512-8ZpNHDIOyqzzgZrQW9+xQ4k5hM62Xy2R4RPO3DQxMc5Rq5QkCdSpk/drka+DL9w6sXNzV5nrdlBmf8+x495QXQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", + "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/visitor-keys": "4.29.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4679,13 +4461,22 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4696,20 +4487,32 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4717,23 +4520,68 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.0.tgz", - "integrity": "sha512-LoaofO1C/jAJYs0uEpYMXfHboGXzOJeV118X4OsZu9f7rG7Pr9B3+4HTU8+err81rADa4xfQmAxnRnPAI2jp+Q==", + "node_modules/@typescript-eslint/utils": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", + "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.29.0", - "eslint-visitor-keys": "^2.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", + "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.17.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@uploadx/core": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@uploadx/core/-/core-6.1.1.tgz", @@ -4748,6 +4596,12 @@ "node": ">=14.18.20" } }, + "node_modules/@vscode/web-custom-data": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/@vscode/web-custom-data/-/web-custom-data-0.4.12.tgz", + "integrity": "sha512-bCemuvwCC84wJQbJoaPou86sjz9DUvZgGa6sAWQwzw7oIELD7z+WnUj2Rdsu8/8XPhKLcg3IswQ2+Pm3OMinIg==", + "dev": true + }, "node_modules/@xmpp/base64": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/@xmpp/base64/-/base64-0.13.1.tgz", @@ -5118,9 +4972,9 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5154,15 +5008,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -5193,7 +5038,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "devOptional": true, + "optional": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5209,48 +5054,21 @@ "dev": true }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5263,15 +5081,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -5290,24 +5109,54 @@ "node": ">=8" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -5335,16 +5184,17 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -5354,24 +5204,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -5382,9 +5214,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" }, "node_modules/async-mutex": { "version": "0.4.0", @@ -5395,34 +5227,19 @@ "tslib": "^2.4.0" } }, - "node_modules/async-mutex/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -5448,41 +5265,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base-64": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", @@ -5520,7 +5307,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true, + "optional": true, "engines": { "node": ">=8" } @@ -5557,9 +5344,9 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -5570,7 +5357,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -5583,7 +5370,7 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/bowser": { @@ -5720,12 +5507,6 @@ "node": ">=10" } }, - "node_modules/bullmq/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, "node_modules/bullmq/node_modules/uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", @@ -5756,26 +5537,6 @@ "node": ">= 0.8" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -5816,23 +5577,23 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, "node_modules/callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -5850,41 +5611,6 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001617", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz", @@ -5932,7 +5658,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "devOptional": true, + "optional": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5958,55 +5684,18 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/clone-deep": { @@ -6067,19 +5756,6 @@ "node": ">=0.12.0" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", @@ -6142,11 +5818,12 @@ } }, "node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/commondir": { @@ -6154,15 +5831,6 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -6230,9 +5898,9 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { "node": ">= 0.6" @@ -6244,15 +5912,6 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-js": { "version": "3.36.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz", @@ -6283,28 +5942,29 @@ } }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/cosmiconfig/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/create-hash": { @@ -6345,10 +6005,11 @@ } }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, + "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -6361,47 +6022,47 @@ } }, "node_modules/css-functions-list": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", - "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "engines": { - "node": ">=12.22" + "node": ">=12 || >=16" } }, "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { "node": ">= 6" @@ -6423,17 +6084,38 @@ } }, "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, "dependencies": { - "css-tree": "^1.1.2" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + }, "node_modules/d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -6444,6 +6126,54 @@ "type": "^1.0.1" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -6454,53 +6184,13 @@ } }, "node_modules/decache": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.0.tgz", - "integrity": "sha512-PppOuLiz+DFeaUvFXEYZjLxAkKiMYH/do/b/MxpDe/8AgKBi5GhZxridoVIbBq72GDbL36e4p0Ce2jTGUwwU+w==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz", + "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==", "dependencies": { "callsite": "^1.0.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -6527,9 +6217,9 @@ } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "node_modules/defer-to-connect": { @@ -6541,16 +6231,19 @@ } }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -6569,19 +6262,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6620,9 +6300,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, "engines": { "node": ">=8" @@ -6667,23 +6347,23 @@ } }, "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, "funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { @@ -6693,12 +6373,12 @@ ] }, "node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "dependencies": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" }, "engines": { "node": ">= 4" @@ -6708,14 +6388,14 @@ } }, "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" @@ -6768,9 +6448,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -6778,7 +6458,7 @@ "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", @@ -6789,21 +6469,30 @@ } }, "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, "engines": { "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/engine.io/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -6815,32 +6504,45 @@ } }, "node_modules/engine.io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=8.6" + "node": ">=10.13.0" } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -6851,49 +6553,56 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -6907,19 +6616,58 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" } }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -6986,40 +6734,42 @@ } }, "node_modules/esbuild": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.2.tgz", - "integrity": "sha512-Rv/CJquZKE00irDLDpk9jmWmtxx1NW+MGpBbNNouaDY0oBwk806uJ51WpLaJBQUxhZqLauX2rrNol5lVQceHJw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.2", - "@esbuild/android-arm64": "0.16.2", - "@esbuild/android-x64": "0.16.2", - "@esbuild/darwin-arm64": "0.16.2", - "@esbuild/darwin-x64": "0.16.2", - "@esbuild/freebsd-arm64": "0.16.2", - "@esbuild/freebsd-x64": "0.16.2", - "@esbuild/linux-arm": "0.16.2", - "@esbuild/linux-arm64": "0.16.2", - "@esbuild/linux-ia32": "0.16.2", - "@esbuild/linux-loong64": "0.16.2", - "@esbuild/linux-mips64el": "0.16.2", - "@esbuild/linux-ppc64": "0.16.2", - "@esbuild/linux-riscv64": "0.16.2", - "@esbuild/linux-s390x": "0.16.2", - "@esbuild/linux-x64": "0.16.2", - "@esbuild/netbsd-x64": "0.16.2", - "@esbuild/openbsd-x64": "0.16.2", - "@esbuild/sunos-x64": "0.16.2", - "@esbuild/win32-arm64": "0.16.2", - "@esbuild/win32-ia32": "0.16.2", - "@esbuild/win32-x64": "0.16.2" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/escalade": { @@ -7044,114 +6794,119 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-config-love": { + "version": "84.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-84.1.1.tgz", + "integrity": "sha512-jkmS0xgiVYQCKb2McwgeGzQWze8iJPPusbKTUprVSoZE8EoMe8SzSl9me8iuF+DdOcuN5Vg2Ry11/OYG98D+zQ==", "dev": true, "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" + "url": "https://github.com/sponsors/mightyiam" }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } + "https://wise.com/pay/me/shaharo" ], - "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0" - } - }, - "node_modules/eslint-config-standard-with-typescript": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-20.0.0.tgz", - "integrity": "sha512-IoySf3r0a2+P3Z6GMjv8p1HuOQ6GWQbMpdt9G8uEbkGpnNWAGBXpgaiutbZHbaQAvG5pkVtYepCfHUxYbVDLCA==", - "dev": true, "dependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint-config-standard": "^16.0.0" + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^17.0.0", + "eslint-plugin-promise": "^7.0.0", + "typescript-eslint": "^8.3.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": ">=4.0.1", - "eslint": ">=7.12.1", - "eslint-plugin-import": ">=2.22.1", - "eslint-plugin-node": ">=11.1.0", - "eslint-plugin-promise": ">=4.2.1", - "typescript": ">=3.9" + "eslint": "^8.0.1", + "typescript": "*" } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -7170,9 +6925,9 @@ "dev": true }, "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -7201,44 +6956,51 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "eslint": ">=4.19.1" + "eslint": ">=8" } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -7247,6 +7009,15 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -7259,22 +7030,25 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-lit": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.13.0.tgz", - "integrity": "sha512-vKc67q6YQ+naYO1QuFpqMoTs3535yp8+0WB/8bzZRLr5NSOb4C6vZrD4se7S9XZtym5TxSVlIqa9QTWYISykQg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.15.0.tgz", + "integrity": "sha512-Yhr2MYNz6Ln8megKcX503aVZQln8wsywCG49g0heiJ/Qr5UjkE4pGr4Usez2anNcc7NvlvHbQWMYwWcgH3XRKA==", "dev": true, "dependencies": { "parse5": "^6.0.1", @@ -7288,115 +7062,117 @@ "eslint": ">= 5" } }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "node_modules/eslint-plugin-n": { + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", + "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", "dev": true, "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.17.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.8.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.5", + "semver": "^7.5.3" }, "engines": { - "node": ">=8.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": ">=5.16.0" + "eslint": ">=8.23.0" } }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/eslint-plugin-promise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", - "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", "dev": true, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": "^7.0.0" - } - }, - "node_modules/eslint-plugin-standard": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz", - "integrity": "sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==", - "deprecated": "standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with 'npm rm eslint-plugin-standard'. More info here: https://github.com/standard/standard/issues/1316", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peerDependencies": { - "eslint": ">=5.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -7449,10 +7225,11 @@ "dev": true }, "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7463,12 +7240,12 @@ } }, "node_modules/eslint/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -7491,21 +7268,109 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -7515,21 +7380,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7588,45 +7438,26 @@ "dev": true }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -7635,15 +7466,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -7656,19 +7478,10 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -7739,10 +7552,11 @@ } }, "node_modules/execa/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7797,102 +7611,38 @@ "node": ">= 8" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -7916,13 +7666,13 @@ "node": ">= 8.0.0" } }, - "node_modules/express/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/express/node_modules/safe-buffer": { @@ -7960,71 +7710,6 @@ "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", "dev": true }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -8032,9 +7717,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -8056,7 +7741,13 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", "dev": true }, "node_modules/fast-xml-parser": { @@ -8130,13 +7821,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -8147,6 +7838,15 @@ "node": ">= 0.8" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -8185,9 +7885,9 @@ } }, "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/fluent-ffmpeg": { @@ -8236,15 +7936,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/form-data": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", @@ -8268,18 +7959,6 @@ "node": ">= 0.6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -8317,7 +7996,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -8352,12 +8030,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -8384,14 +8056,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8422,12 +8098,13 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -8436,13 +8113,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "node_modules/get-tsconfig": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz", + "integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, "node_modules/glob": { @@ -8476,12 +8156,6 @@ "node": ">= 6" } }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -8509,15 +8183,12 @@ } }, "node_modules/globals": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", - "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "version": "15.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", + "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8575,9 +8246,9 @@ } }, "node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -8599,30 +8270,16 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/has-bigints": { "version": "1.0.2", @@ -8641,20 +8298,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -8674,11 +8331,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -8687,69 +8344,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -8799,7 +8393,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -8913,14 +8506,20 @@ } }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" } }, + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -8937,15 +8536,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -8955,15 +8545,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflection": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", @@ -8994,12 +8575,12 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -9062,26 +8643,16 @@ "node": ">= 0.10" } }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9108,7 +8679,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "optional": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9131,12 +8702,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -9149,27 +8714,32 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { + "node_modules/is-data-view": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", - "dev": true, + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dependencies": { - "hasown": "^2.0.0" + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { @@ -9183,31 +8753,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -9233,9 +8778,9 @@ "dev": true }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "devOptional": true, "dependencies": { "is-extglob": "^2.1.1" @@ -9245,9 +8790,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "engines": { "node": ">= 0.4" }, @@ -9278,13 +8823,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-plain-object": { @@ -9320,11 +8865,14 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9371,11 +8919,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -9395,15 +8943,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -9425,9 +8964,9 @@ } }, "node_modules/jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", "funding": { "url": "https://github.com/sponsors/panva" } @@ -9438,13 +8977,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -9487,7 +9025,7 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json5": { @@ -9515,9 +9053,9 @@ } }, "node_modules/keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { "json-buffer": "3.0.1" } @@ -9531,9 +9069,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", + "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", "dev": true }, "node_modules/koa-compose": { @@ -9570,263 +9108,68 @@ } }, "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "node_modules/lit": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.4.0.tgz", - "integrity": "sha512-fdgzxEtLrZFQU/BqTtxFQCLwlZd9bdat+ltzSFjvWkZrs7eBmeX0L5MHUMb3kYIkuS8Xlfnii/iI5klirF8/Xg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", "dev": true, "dependencies": { - "@lit/reactive-element": "^1.4.0", - "lit-element": "^3.2.0", - "lit-html": "^2.4.0" + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" } }, "node_modules/lit-analyzer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-1.2.1.tgz", - "integrity": "sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-2.0.3.tgz", + "integrity": "sha512-XiAjnwVipNrKav7r3CSEZpWt+mwYxrhPRVC7h8knDmn/HWTzzWJvPe+mwBcL2brn4xhItAMzZhFC8tzzqHKmiQ==", "dev": true, "dependencies": { + "@vscode/web-custom-data": "^0.4.2", "chalk": "^2.4.2", "didyoumean2": "4.1.0", - "fast-glob": "^2.2.6", + "fast-glob": "^3.2.11", "parse5": "5.1.0", - "ts-simple-type": "~1.0.5", + "ts-simple-type": "~2.0.0-next.0", "vscode-css-languageservice": "4.3.0", "vscode-html-languageservice": "3.1.0", - "web-component-analyzer": "~1.1.1" + "web-component-analyzer": "^2.0.0" }, "bin": { "lit-analyzer": "cli.js" } }, - "node_modules/lit-analyzer/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/lit-analyzer/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/lit-analyzer/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/lit-analyzer/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lit-analyzer/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lit-analyzer/node_modules/parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", "dev": true }, - "node_modules/lit-analyzer/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lit-element": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", - "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.0.tgz", + "integrity": "sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==", "dev": true, "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.8.0" - } - }, - "node_modules/lit-element/node_modules/@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", - "dev": true, - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" } }, "node_modules/lit-html": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", - "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz", + "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==", "dev": true, "dependencies": { "@types/trusted-types": "^2.0.2" } }, - "node_modules/lit/node_modules/@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", - "dev": true, - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" - } - }, "node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -9872,7 +9215,7 @@ "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "node_modules/log-rotate": { @@ -9983,39 +9326,6 @@ "node": ">=6" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -10037,9 +9347,9 @@ } }, "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, "node_modules/media-typer": { @@ -10077,99 +9387,25 @@ } }, "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -10258,15 +9494,6 @@ "node": ">=4" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -10284,33 +9511,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -10468,9 +9668,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -10485,32 +9685,10 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/negotiator": { @@ -10534,6 +9712,13 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true + }, "node_modules/node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -10721,9 +9906,9 @@ } }, "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { "boolbase": "^1.0.0" @@ -10741,57 +9926,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-hash": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", @@ -10801,9 +9935,12 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10816,25 +9953,13 @@ "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -10845,6 +9970,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object.getownpropertydescriptors": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", @@ -10863,27 +10006,29 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10945,11 +10090,11 @@ } }, "node_modules/openid-client": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.5.tgz", - "integrity": "sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.0.tgz", + "integrity": "sha512-4GCCGZt1i2kTHpwvaC/sCpTpQqDnBzDzuJcJMbH+y1Q5qI8U8RBvoSh28svarXszZHR5BAMXbJPX1PGPRE3VOA==", "dependencies": { - "jose": "^4.15.5", + "jose": "^4.15.9", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" @@ -10959,17 +10104,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -11116,21 +10261,6 @@ "node": ">= 0.8" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -11163,9 +10293,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/path-type": { @@ -11184,9 +10314,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -11239,19 +10369,18 @@ "node": ">=6" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -11268,9 +10397,9 @@ } ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -11283,47 +10412,67 @@ "dev": true }, "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", "dev": true }, "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=18.0" }, "peerDependencies": { - "postcss": "^8.3.3" + "postcss": "^8.4.31" } }, "node_modules/postcss-scss": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.2.tgz", - "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { - "postcss": "^8.3.3" + "postcss": "^8.4.29" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -11354,15 +10503,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promisify-any": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promisify-any/-/promisify-any-2.0.1.tgz", @@ -11415,12 +10555,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -11501,102 +10641,6 @@ "node": ">= 0.8" } }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -11616,7 +10660,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, + "optional": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -11624,19 +10668,6 @@ "node": ">=8.10.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/redis-errors": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", @@ -11669,27 +10700,15 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -11698,36 +10717,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -11746,12 +10735,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -11767,12 +10750,12 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -11797,12 +10780,14 @@ "node": ">=4" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } }, "node_modules/responselike": { "version": "2.0.0", @@ -11812,15 +10797,6 @@ "lowercase-keys": "^2.0.0" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry-as-promised": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", @@ -11891,12 +10867,12 @@ "dev": true }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -11917,24 +10893,18 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11990,18 +10960,51 @@ } }, "node_modules/sass": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", - "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", + "version": "1.81.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.81.1.tgz", + "integrity": "sha512-VNLgf4FC5yFyKwAumAAwwNh8X4SevlVREq3Y8aDZIkm0lI/zO1feycMXQ4hn+eB6FVhRbleSQ1Yb/q8juSldTA==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/sax": { @@ -12019,9 +11022,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -12196,73 +11199,57 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/set-blocking": { + "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/setprototypeof": { @@ -12295,43 +11282,42 @@ } }, "node_modules/sharp": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.2.tgz", - "integrity": "sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", "dev": true, "hasInstallScript": true, "dependencies": { "color": "^4.2.3", - "detect-libc": "^2.0.2", - "semver": "^7.5.4" + "detect-libc": "^2.0.3", + "semver": "^7.6.3" }, "engines": { - "libvips": ">=8.15.1", "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.2", - "@img/sharp-darwin-x64": "0.33.2", - "@img/sharp-libvips-darwin-arm64": "1.0.1", - "@img/sharp-libvips-darwin-x64": "1.0.1", - "@img/sharp-libvips-linux-arm": "1.0.1", - "@img/sharp-libvips-linux-arm64": "1.0.1", - "@img/sharp-libvips-linux-s390x": "1.0.1", - "@img/sharp-libvips-linux-x64": "1.0.1", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1", - "@img/sharp-libvips-linuxmusl-x64": "1.0.1", - "@img/sharp-linux-arm": "0.33.2", - "@img/sharp-linux-arm64": "0.33.2", - "@img/sharp-linux-s390x": "0.33.2", - "@img/sharp-linux-x64": "0.33.2", - "@img/sharp-linuxmusl-arm64": "0.33.2", - "@img/sharp-linuxmusl-x64": "0.33.2", - "@img/sharp-wasm32": "0.33.2", - "@img/sharp-win32-ia32": "0.33.2", - "@img/sharp-win32-x64": "0.33.2" + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" } }, "node_modules/sharp/node_modules/color": { @@ -12366,13 +11352,10 @@ "dev": true }, "node_modules/sharp/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -12424,13 +11407,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12571,141 +11558,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, @@ -12814,28 +11677,14 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -12845,13 +11694,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -12884,31 +11726,6 @@ "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -12924,44 +11741,6 @@ "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", "dev": true }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -13020,13 +11799,14 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13036,26 +11816,29 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13091,18 +11874,6 @@ "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -13121,129 +11892,210 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", - "dev": true - }, "node_modules/stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz", + "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], "dependencies": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.1", + "debug": "^4.3.7", + "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", - "import-lazy": "^4.0.0", + "html-tags": "^3.3.1", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", + "meow": "^13.2.0", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", + "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "table": "^6.8.2", + "write-file-atomic": "^5.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" + "node": ">=18.12.0" } }, "node_modules/stylelint-config-recommended": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", - "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", + "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "stylelint": "^14.0.0" + "stylelint": "^16.1.0" } }, "node_modules/stylelint-config-recommended-scss": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz", - "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz", + "integrity": "sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==", "dev": true, "dependencies": { - "postcss-scss": "^4.0.2", - "stylelint-config-recommended": "^6.0.0", - "stylelint-scss": "^4.0.0" + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" + }, + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^14.0.0" + "postcss": "^8.3.3", + "stylelint": "^16.6.1" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } } }, "node_modules/stylelint-config-standard": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-23.0.0.tgz", - "integrity": "sha512-8PDlk+nWuc1T66nVaODTdVodN0pjuE5TBlopi39Lt9EM36YJsRhqttMyUhnS78oc/59Q6n8iw2GJB4QcoFqtRg==", + "version": "36.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", + "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], "dependencies": { - "stylelint-config-recommended": "^6.0.0" + "stylelint-config-recommended": "^14.0.1" + }, + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^14.0.0" + "stylelint": "^16.1.0" } }, "node_modules/stylelint-config-standard-scss": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-2.0.1.tgz", - "integrity": "sha512-TW5NLquUSS0mg2N31zzaSbYRbV/CMifSVLdpgo6VdGvjysgYqJOcKM/5bmXucTOsdfqomcPXetFZ3adC7nD+cg==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz", + "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==", "dev": true, "dependencies": { - "stylelint-config-recommended-scss": "^5.0.0", - "stylelint-config-standard": "^23.0.0" + "stylelint-config-recommended-scss": "^14.0.0", + "stylelint-config-standard": "^36.0.0" + }, + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^14.0.0" + "postcss": "^8.3.3", + "stylelint": "^16.3.1" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } } }, "node_modules/stylelint-scss": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", - "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.5.1.tgz", + "integrity": "sha512-ZLqdqihm6uDYkrsOeD6YWb+stZI8Wn92kUNDhE4M+g9g1aCnRv0JlOrttFiAJJwaNzpdQgX3YJb5vDQXVuO9Ww==", "dev": true, "dependencies": { + "css-tree": "2.3.1", + "is-plain-object": "5.0.0", + "known-css-properties": "^0.34.0", "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.11", + "postcss-resolve-nested-selector": "^0.1.4", + "postcss-selector-parser": "^6.1.1", "postcss-value-parser": "^4.2.0" }, + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "stylelint": "^14.5.1 || ^15.0.0" + "stylelint": "^16.0.2" + } + }, + "node_modules/stylelint-scss/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" } }, "node_modules/stylelint/node_modules/balanced-match": { @@ -13252,13 +12104,26 @@ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, - "node_modules/stylelint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/stylelint/node_modules/css-tree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", + "integrity": "sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==", "dev": true, "dependencies": { - "ms": "2.1.2" + "mdn-data": "2.12.1", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/stylelint/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -13269,6 +12134,40 @@ } } }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "dev": true, + "dependencies": { + "flat-cache": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/stylelint/node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -13278,12 +12177,37 @@ "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/stylelint/node_modules/known-css-properties": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", "dev": true }, + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.1.tgz", + "integrity": "sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==", + "dev": true + }, + "node_modules/stylelint/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/stylelint/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -13315,16 +12239,19 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-hyperlinks/node_modules/has-flag": { @@ -13355,24 +12282,28 @@ "dev": true }, "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "dev": true, "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "bin": { "svgo": "bin/svgo" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, "node_modules/svgo/node_modules/commander": { @@ -13385,9 +12316,9 @@ } }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -13401,15 +12332,15 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -13422,6 +12353,15 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -13431,7 +12371,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/thirty-two": { @@ -13461,45 +12401,6 @@ "node": ">=4" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13532,60 +12433,48 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", "dev": true }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-simple-type": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-1.0.7.tgz", - "integrity": "sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ==", + "version": "2.0.0-next.0", + "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-2.0.0-next.0.tgz", + "integrity": "sha512-A+hLX83gS+yH6DtzNAhzZbPfU+D9D8lHlTSd7GeoMRBjOt3GRylDqLTYbdmjA4biWvq2xSfpqfIDj2l0OA/BVg==", "dev": true }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -13630,27 +12519,28 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -13660,15 +12550,16 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -13678,13 +12569,19 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13697,16 +12594,42 @@ "dev": true }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz", + "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.17.0", + "@typescript-eslint/parser": "8.17.0", + "@typescript-eslint/utils": "8.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/uid-safe": { @@ -13735,30 +12658,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -13777,54 +12676,6 @@ "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -13863,22 +12714,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -13902,12 +12737,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -13920,9 +12749,9 @@ } }, "node_modules/validate-color": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/validate-color/-/validate-color-2.2.1.tgz", - "integrity": "sha512-1eDb1zqP6W6bbfKKl6dRXObelNoQpW7aF3BUTh2AivWuhcD0pa3ejwURWqrVsyKJMLBMlHLFcM3sj5J+dSFhbg==" + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/validate-color/-/validate-color-2.2.4.tgz", + "integrity": "sha512-Znolz+b6CwW6eBXYld7MFM3O7funcdyRfjKC/X9hqYV/0VcC5LB/L45mff7m3dIn9wdGdNOAQ/fybNuD5P/HDw==" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -14001,15 +12830,15 @@ "dev": true }, "node_modules/web-component-analyzer": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-1.1.7.tgz", - "integrity": "sha512-SqCqN4nU9fU+j0CKXJQ8E4cslLsaezhagY6xoi+hoNPPd55GzR6MY1r5jkoJUVu+g4Wy4uB+JglTt7au4vQ1uA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-2.0.0.tgz", + "integrity": "sha512-UEvwfpD+XQw99sLKiH5B1T4QwpwNyWJxp59cnlRwFfhUW6JsQpw5jMeMwi7580sNou8YL3kYoS7BWLm+yJ/jVQ==", "dev": true, "dependencies": { "fast-glob": "^3.2.2", - "ts-simple-type": "~1.0.5", - "typescript": "^3.8.3", - "yargs": "^15.3.1" + "ts-simple-type": "2.0.0-next.0", + "typescript": "~5.2.0", + "yargs": "^17.7.2" }, "bin": { "wca": "cli.js", @@ -14017,16 +12846,16 @@ } }, "node_modules/web-component-analyzer/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/webidl-conversions": { @@ -14070,22 +12899,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14167,10 +12990,19 @@ "@types/node": "*" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -14178,7 +13010,10 @@ "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { @@ -14220,16 +13055,28 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ws": { @@ -14265,9 +13112,9 @@ } }, "node_modules/xmppjs-chat-bot": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.3.0.tgz", - "integrity": "sha512-UJoYEiqC9Z1qEb/e4VWeNmSapfa+XzlhaqL4UyannEtj0gi2f8BbsOw9LRp5TdNnOQi1CPZY3xMRgxa9pps2TQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.5.0.tgz", + "integrity": "sha512-P+C2x00zS3Zd0PvkKeiT+cPYMQOW/pZu2pEG+iNkUjHU5MYBukn48aMgbzzPwJVQpk/9FuZZeK1m/pl3iD2KFA==", "funding": [ "https://paypal.me/JohnXLivingston", "https://liberapay.com/JohnLivingston/" @@ -14279,7 +13126,7 @@ "@xmpp/id": "^0.13.1", "@xmpp/jid": "^0.13.1", "@xmpp/xml": "^0.13.1", - "commander": "^11.0.0" + "commander": "^11.1.0" }, "bin": { "xmppjs-chat-bot": "lib/cli/cli.js" @@ -14288,6 +13135,14 @@ "node": ">= 14.4.0" } }, + "node_modules/xmppjs-chat-bot/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "engines": { + "node": ">=16" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -14298,10 +13153,13 @@ } }, "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { "version": "4.0.0", @@ -14309,103 +13167,58 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", "dev": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } }, "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "engines": { + "node": ">=10" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } }, "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, "@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -14424,14 +13237,6 @@ "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-crypto/crc32c": { @@ -14443,14 +13248,6 @@ "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-crypto/sha1-browser": { @@ -14495,12 +13292,6 @@ "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } - }, - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true } } }, @@ -14547,12 +13338,6 @@ "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } - }, - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true } } }, @@ -14565,14 +13350,6 @@ "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-crypto/supports-web-crypto": { @@ -14582,14 +13359,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-crypto/util": { @@ -14631,12 +13400,6 @@ "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } - }, - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true } } }, @@ -14704,14 +13467,6 @@ "@smithy/util-utf8": "^3.0.0", "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/client-sso": { @@ -14758,14 +13513,6 @@ "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/client-sso-oidc": { @@ -14813,14 +13560,6 @@ "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/client-sts": { @@ -14869,14 +13608,6 @@ "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/core": { @@ -14895,14 +13626,6 @@ "@smithy/util-middleware": "^3.0.3", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/credential-provider-env": { @@ -14915,14 +13638,6 @@ "@smithy/property-provider": "^3.1.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/credential-provider-http": { @@ -14940,14 +13655,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/credential-provider-ini": { @@ -14967,14 +13674,6 @@ "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/credential-provider-node": { @@ -14995,14 +13694,6 @@ "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/credential-provider-process": { @@ -15016,14 +13707,6 @@ "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/credential-provider-sso": { @@ -15039,14 +13722,6 @@ "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/credential-provider-web-identity": { @@ -15059,14 +13734,6 @@ "@smithy/property-provider": "^3.1.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-bucket-endpoint": { @@ -15082,14 +13749,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-expect-continue": { @@ -15102,14 +13761,6 @@ "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-flexible-checksums": { @@ -15126,14 +13777,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-host-header": { @@ -15146,14 +13789,6 @@ "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-location-constraint": { @@ -15165,14 +13800,6 @@ "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-logger": { @@ -15184,14 +13811,6 @@ "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-recursion-detection": { @@ -15204,14 +13823,6 @@ "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-sdk-s3": { @@ -15234,14 +13845,6 @@ "@smithy/util-stream": "^3.1.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-ssec": { @@ -15253,14 +13856,6 @@ "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/middleware-user-agent": { @@ -15274,14 +13869,6 @@ "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/region-config-resolver": { @@ -15296,14 +13883,6 @@ "@smithy/util-config-provider": "^3.0.0", "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/signature-v4-multi-region": { @@ -15318,14 +13897,6 @@ "@smithy/signature-v4": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/token-providers": { @@ -15339,14 +13910,6 @@ "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/types": { @@ -15357,14 +13920,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/util-arn-parser": { @@ -15374,14 +13929,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/util-endpoints": { @@ -15394,14 +13941,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-endpoints": "^2.0.5", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/util-locate-window": { @@ -15411,14 +13950,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/util-user-agent-browser": { @@ -15431,14 +13962,6 @@ "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/util-user-agent-node": { @@ -15451,14 +13974,6 @@ "@smithy/node-config-provider": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@aws-sdk/xml-builder": { @@ -15469,14 +13984,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@babel/cli": { @@ -15508,12 +14015,12 @@ } }, "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { @@ -15543,15 +14050,6 @@ "semver": "^6.3.1" }, "dependencies": { - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -15697,9 +14195,9 @@ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" }, "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" }, "@babel/helper-validator-option": { "version": "7.23.5", @@ -15717,13 +14215,14 @@ } }, "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "requires": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/node": { @@ -15800,17 +14299,6 @@ "@babel/code-frame": "^7.23.5", "@babel/parser": "^7.24.0", "@babel/types": "^7.24.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - } - } } }, "@babel/traverse": { @@ -15830,15 +14318,6 @@ "globals": "^11.1.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -15875,10 +14354,23 @@ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true }, - "@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "requires": {} + }, + "@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true + }, + "@csstools/media-query-list-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", "dev": true, "requires": {} }, @@ -15893,410 +14385,451 @@ "kuler": "^2.0.0" } }, + "@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "dev": true + }, "@emnapi/runtime": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-0.45.0.tgz", - "integrity": "sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", "dev": true, "optional": true, "requires": { "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true, - "optional": true - } } }, + "@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "dev": true, + "optional": true + }, "@esbuild/android-arm": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.2.tgz", - "integrity": "sha512-t8zq/Ad8njye3tYkbdBYAEGBExCyqFuPnKmKgLBF9+nIwAS/V3FYck6BjAx813JCGXkNsR1iriS8jQFwydT+FA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.2.tgz", - "integrity": "sha512-3CjbygjFHmtxDW59FOUM1T28G+aVqzbM+cNNinMgRUq+bmAstJdqmJL/KqpUwuCRTri4BgHJRWQbHOQFLwIpxw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.2.tgz", - "integrity": "sha512-J5pzzVs9gHRQff8vUBhGMRQU1avwD9IVTSfzhdnKRqlxq0hsdcgZxH95Ckj/q2KJ4nMPYfDBSRXrrvQ4PyMpFA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.2.tgz", - "integrity": "sha512-XmjlYmR1UTEdMT2X3TxnA0hG8zOi3q/BzqNN6/PDBxw/UxE9gdj7LGwiQus5HHZM03vSvjRO7WJ7qaJBGBWnpQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.2.tgz", - "integrity": "sha512-nq5cXgzbXHhBqZEPpuXrf2+BV6QWUM8vAyT/ElJrdIkoGOHwNQJEqZHl3KOWK+1V3KXEXgJhh7DsLixIc677ZQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.2.tgz", - "integrity": "sha512-1QuZr7GnoipDYMFJDucqXmVvJZidZuHbvw5QLzBehYq67GR1Jub9pSo6O0Rt4LtKnu3TF2K/bjgzPJAGFY6W4Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.2.tgz", - "integrity": "sha512-uvbv99Wg2T489bqUz4gYVb2IpSSZZP/uTkaZpaLN+h3x58FmsLT4o7bF1Refd2JIKuONxSobljlk5/K/RD9SsQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.2.tgz", - "integrity": "sha512-8n2UozHygOGXzgysim6GifKjv+lW4fs3mlfaoKerwBIOT9OBCo1Q4AjvbtU3F+2AGyo8eavxnj6Xxx0DRTOwiw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.2.tgz", - "integrity": "sha512-S7EwMhEUMzYfd9KTHJX7Y3bKz7/9sZDRJPp10EOQ3Qqp10WvX2G42Q2c7rfymnm9aM5ZWs+W8WgbLFAUnjC3Wg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.2.tgz", - "integrity": "sha512-TRz3MDvv65zXZ4NTJYi1yyVj17Qrsm8y6J8r4qIdd2qszRLPHmte4LAazPa7g+To6QfM2kL3gHmVhwV6GcYz0g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.2.tgz", - "integrity": "sha512-yhHJCvPQjh/8wLEk336QzXMHYnMKJdzLcNAnXwVawSvsLqyzTYrGshrO1YMhzs5cWgR75DFNnhcAFgEtleAZOw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.2.tgz", - "integrity": "sha512-YwMpV41qIKRHASV4MaaA/PKk9CoZ4QyVyPXhUtLTO9kPWtWECRI4MTBrGIb9kGUpL6I+jiT4fAZn8YpWSGBkQg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.2.tgz", - "integrity": "sha512-s4YuINcRxCA9TElEf2iBdG6oZWdNu2Eb6R9TbRBcZOTdcgdBKIinaVyEiQ8H6nmCafWCuuJT8u66zds2ET3t1Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.2.tgz", - "integrity": "sha512-oacL6QGqVRhBCbBlFxODYfcCkB6tPmfanaWnsuHNI7m9LVkBuuDKpsC3XWOwkEQiLIJcvhhZKOkkgw49KxS1Dw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.2.tgz", - "integrity": "sha512-5ifr0lshZbLI457Qe6y3MsDYv1cSOJ8awgi0HT14cS59WliT7bDkrr3kmDw/LqGOAPyDvDD+U8s2cFBSENetuA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.2.tgz", - "integrity": "sha512-TA/ORYlP6h2pfB/dzrPTMFWd1MaUYy7kwblWdzwkUtsTAJAKJlZwBhkKftSaUNNU5wtXNJ9+ucMDf7vBPbDjlw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.2.tgz", - "integrity": "sha512-oBH2Aj4fL9FLlkIi2wYGckydKHVKmYrqiqt91i6kFE1mF7B05YYttrlOHAf3JzWIJQWyvzvsmoA/XFPf1sTgBw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.2.tgz", - "integrity": "sha512-eKOpYr7CiF9GZxu18iOQGfzQ4htO6KGhXriW2raJvRO0G27Lu7ArAI/kW71yTPaFqlf9gCmCGaTPr2tmiUePVg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.2.tgz", - "integrity": "sha512-1HsQLVnjhlscekE8H5Xj49xPvd0c74eoZEjh+OUnr+x7vCXdTVdFDgao9QM0H9zfioxJN1ZH7534LwxEaAWaIA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.2.tgz", - "integrity": "sha512-G9AWjsnVxGQj8z0WgaDwTKgXzwc9zLPYDFoLE4oAGI/TQnft0eQjc+CKiWRyoa+a/c3XIFGXoWnW+17kbibSfA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.2.tgz", - "integrity": "sha512-UJqmfPsiSX/wP1kY5JMordRqNU2r8n8ieXmNimp4r35sQEX3bjnSkPJ2E8BM8W8ecmEL+oDjYjulkTT3zSPa1g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.2.tgz", - "integrity": "sha512-1+PQiGAbbGlIXXlp9i/5JRpodCsozGTjffaD4W1LgeoynWef38VD8NNC8yG366NYXHHHLR1pN6MQZ9r2na/S1A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "dev": true, "optional": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true + }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, + "@eslint/js": { + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "dev": true + }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "@img/sharp-darwin-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz", - "integrity": "sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-darwin-arm64": "1.0.1" + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, "@img/sharp-darwin-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.2.tgz", - "integrity": "sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-darwin-x64": "1.0.1" + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, "@img/sharp-libvips-darwin-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", "dev": true, "optional": true }, "@img/sharp-libvips-darwin-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.1.tgz", - "integrity": "sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", "dev": true, "optional": true }, "@img/sharp-libvips-linux-arm": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.1.tgz", - "integrity": "sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", "dev": true, "optional": true }, "@img/sharp-libvips-linux-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.1.tgz", - "integrity": "sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", "dev": true, "optional": true }, "@img/sharp-libvips-linux-s390x": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.1.tgz", - "integrity": "sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", "dev": true, "optional": true }, "@img/sharp-libvips-linux-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.1.tgz", - "integrity": "sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", "dev": true, "optional": true }, "@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.1.tgz", - "integrity": "sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", "dev": true, "optional": true }, "@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.1.tgz", - "integrity": "sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", "dev": true, "optional": true }, "@img/sharp-linux-arm": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.2.tgz", - "integrity": "sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-linux-arm": "1.0.1" + "@img/sharp-libvips-linux-arm": "1.0.5" } }, "@img/sharp-linux-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.2.tgz", - "integrity": "sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-linux-arm64": "1.0.1" + "@img/sharp-libvips-linux-arm64": "1.0.4" } }, "@img/sharp-linux-s390x": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.2.tgz", - "integrity": "sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-linux-s390x": "1.0.1" + "@img/sharp-libvips-linux-s390x": "1.0.4" } }, "@img/sharp-linux-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.2.tgz", - "integrity": "sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-linux-x64": "1.0.1" + "@img/sharp-libvips-linux-x64": "1.0.4" } }, "@img/sharp-linuxmusl-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.2.tgz", - "integrity": "sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1" + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" } }, "@img/sharp-linuxmusl-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.2.tgz", - "integrity": "sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", "dev": true, "optional": true, "requires": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.1" + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, "@img/sharp-wasm32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.2.tgz", - "integrity": "sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", "dev": true, "optional": true, "requires": { - "@emnapi/runtime": "^0.45.0" + "@emnapi/runtime": "^1.2.0" } }, "@img/sharp-win32-ia32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.2.tgz", - "integrity": "sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", "dev": true, "optional": true }, "@img/sharp-win32-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.2.tgz", - "integrity": "sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", "dev": true, "optional": true }, @@ -16347,39 +14880,6 @@ "dev": true, "requires": { "lit": "^3.1.2" - }, - "dependencies": { - "lit": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.3.tgz", - "integrity": "sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==", - "dev": true, - "requires": { - "@lit/reactive-element": "^2.0.4", - "lit-element": "^4.0.4", - "lit-html": "^3.1.2" - } - }, - "lit-element": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.5.tgz", - "integrity": "sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==", - "dev": true, - "requires": { - "@lit-labs/ssr-dom-shim": "^1.2.0", - "@lit/reactive-element": "^2.0.4", - "lit-html": "^3.1.2" - } - }, - "lit-html": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.3.tgz", - "integrity": "sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==", - "dev": true, - "requires": { - "@types/trusted-types": "^2.0.2" - } - } } }, "@lit-labs/ssr-dom-shim": { @@ -16389,9 +14889,9 @@ "dev": true }, "@lit/context": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.1.tgz", - "integrity": "sha512-q/Rw7oWSJidUP43f/RUPwqZ6f5VlY8HzinTWxL/gW1Hvm2S5q2hZvV+qM8WFcC+oLNNknc3JKsd5TwxLk1hbdg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.3.tgz", + "integrity": "sha512-Auh37F4S0PZM93HTDfZWs97mmzaQ7M3vnTc9YvxAGyP3UItSK/8Fs0vTOGT+njuvOwbKio/l8Cx/zWL4vkutpQ==", "dev": true, "requires": { "@lit/reactive-element": "^1.6.2 || ^2.0.0" @@ -16407,24 +14907,14 @@ } }, "@lit/task": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lit/task/-/task-1.0.0.tgz", - "integrity": "sha512-7jocGBh3yGlo3kKxQggZph2txK4X5GYNWp2FAsmV9u2spzUypwrzRzXe8I72icAb02B00+k2nlvxVcrQB6vyrw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@lit/task/-/task-1.0.1.tgz", + "integrity": "sha512-fVLDtmwCau8NywnFIXaJxsCZjzaIxnVq+cFRKYC1Y4tA4/0rMTvF6DLZZ2JE51BwzOluaKtgJX8x1QDsQtAaIw==", "dev": true, "requires": { "@lit/reactive-element": "^1.0.0 || ^2.0.0" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, "@msgpackr-extract/msgpackr-extract-darwin-arm64": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", @@ -16560,10 +15050,128 @@ "integrity": "sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA==", "dev": true }, + "@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "dev": true, + "optional": true, + "requires": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "dependencies": { + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true + } + } + }, + "@parcel/watcher-android-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-ia32": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "dev": true, + "optional": true + }, "@peertube/feed": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@peertube/feed/-/feed-5.1.0.tgz", - "integrity": "sha512-ggwIbjxh4oc1aAGYV7ZxtIpiEIGq3Rkg6FxvOSrk/EPZ76rExoIJCjKeSyd4zb/sGkyKldy+bGs1OUUVidWWTQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@peertube/feed/-/feed-5.1.3.tgz", + "integrity": "sha512-73eRzZnpYBZMNS4FOsDjCfiu2CM60lCO1o3En/AB+LthYUd1dXEOG36PwQLMVlujAcHgQmGXdk08PMAUMj/Pug==", "dev": true, "requires": { "xml-js": "^1.6.11" @@ -16638,6 +15246,12 @@ } } }, + "@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "@sindresorhus/is": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz", @@ -16651,14 +15265,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/chunked-blob-reader": { @@ -16668,14 +15274,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/chunked-blob-reader-native": { @@ -16686,14 +15284,6 @@ "requires": { "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/config-resolver": { @@ -16707,14 +15297,6 @@ "@smithy/util-config-provider": "^3.0.0", "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/core": { @@ -16733,14 +15315,6 @@ "@smithy/util-middleware": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/credential-provider-imds": { @@ -16754,14 +15328,6 @@ "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/eventstream-codec": { @@ -16774,14 +15340,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-hex-encoding": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/eventstream-serde-browser": { @@ -16793,14 +15351,6 @@ "@smithy/eventstream-serde-universal": "^3.0.5", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/eventstream-serde-config-resolver": { @@ -16811,14 +15361,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/eventstream-serde-node": { @@ -16830,14 +15372,6 @@ "@smithy/eventstream-serde-universal": "^3.0.5", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/eventstream-serde-universal": { @@ -16849,14 +15383,6 @@ "@smithy/eventstream-codec": "^3.1.2", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/fetch-http-handler": { @@ -16870,14 +15396,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/hash-blob-browser": { @@ -16890,14 +15408,6 @@ "@smithy/chunked-blob-reader-native": "^3.0.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/hash-node": { @@ -16910,14 +15420,6 @@ "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/hash-stream-node": { @@ -16929,14 +15431,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/invalid-dependency": { @@ -16947,14 +15441,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/is-array-buffer": { @@ -16964,14 +15450,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/md5-js": { @@ -16983,14 +15461,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/middleware-content-length": { @@ -17002,14 +15472,6 @@ "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/middleware-endpoint": { @@ -17025,14 +15487,6 @@ "@smithy/url-parser": "^3.0.3", "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/middleware-retry": { @@ -17052,12 +15506,6 @@ "uuid": "^9.0.1" }, "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - }, "uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -17074,14 +15522,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/middleware-stack": { @@ -17092,14 +15532,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/node-config-provider": { @@ -17112,14 +15544,6 @@ "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/node-http-handler": { @@ -17133,14 +15557,6 @@ "@smithy/querystring-builder": "^3.0.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/property-provider": { @@ -17151,14 +15567,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/protocol-http": { @@ -17169,14 +15577,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/querystring-builder": { @@ -17188,14 +15588,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/querystring-parser": { @@ -17206,14 +15598,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/service-error-classification": { @@ -17233,14 +15617,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/signature-v4": { @@ -17257,14 +15633,6 @@ "@smithy/util-uri-escape": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/smithy-client": { @@ -17279,14 +15647,6 @@ "@smithy/types": "^3.3.0", "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/types": { @@ -17296,14 +15656,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/url-parser": { @@ -17315,14 +15667,6 @@ "@smithy/querystring-parser": "^3.0.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-base64": { @@ -17334,14 +15678,6 @@ "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-body-length-browser": { @@ -17351,14 +15687,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-body-length-node": { @@ -17368,14 +15696,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-buffer-from": { @@ -17386,14 +15706,6 @@ "requires": { "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-config-provider": { @@ -17403,14 +15715,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-defaults-mode-browser": { @@ -17424,14 +15728,6 @@ "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-defaults-mode-node": { @@ -17447,14 +15743,6 @@ "@smithy/smithy-client": "^3.2.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-endpoints": { @@ -17466,14 +15754,6 @@ "@smithy/node-config-provider": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-hex-encoding": { @@ -17483,14 +15763,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-middleware": { @@ -17501,14 +15773,6 @@ "requires": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-retry": { @@ -17520,14 +15784,6 @@ "@smithy/service-error-classification": "^3.0.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-stream": { @@ -17544,14 +15800,6 @@ "@smithy/util-hex-encoding": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-uri-escape": { @@ -17561,14 +15809,6 @@ "dev": true, "requires": { "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-utf8": { @@ -17579,14 +15819,6 @@ "requires": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@smithy/util-waiter": { @@ -17598,14 +15830,6 @@ "@smithy/abort-controller": "^3.1.1", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true - } } }, "@socket.io/component-emitter": { @@ -17614,6 +15838,44 @@ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, + "@stylistic/eslint-plugin": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.11.0.tgz", + "integrity": "sha512-PNRHbydNG5EH8NK4c+izdJlxajIR6GxcUhzsYNRsn6Myep4dsZt0qFCz3rCPnkvgO5FYibDcMqgNHUT+zvjYZw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + }, + "espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "requires": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + } + }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + } + } + }, "@szmarczak/http-timer": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", @@ -17628,16 +15890,16 @@ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "@tsconfig/node16": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.3.tgz", + "integrity": "sha512-9nTOUBn+EMKO6rtSZJk+DcqsfgtlERGT9XPJ5PRj/HNENPCBY1yu/JEj5wT6GLtbCLBO2k46SeXDaY0pjMqypw==", "dev": true }, "@types/async": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.9.tgz", - "integrity": "sha512-5Jx7ifieGrZq5qtKfZfQ/7o43eC7rkAURHEZYa4DUwydToHLgMdIpMseNmYvf+BdgIDCARo+LxlBz9LDAXAwNg==", + "version": "3.2.24", + "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.24.tgz", + "integrity": "sha512-8iHVLHsCCOBKjCF2KwFe0p9Z3rfM9mL+sSP8btyR5vTjJRAqpBYD28/ZLgXPf0pjG1VxOvtCV/BgXkQbpSe8Hw==", "dev": true }, "@types/bluebird": { @@ -17706,27 +15968,53 @@ "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==", "dev": true }, + "@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "dev": true, + "requires": { + "@types/eslint": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", + "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^5.0.0", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz", + "integrity": "sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==", "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/fluent-ffmpeg": { @@ -17765,18 +16053,18 @@ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" }, "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "requires": { "@types/node": "*" } }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "@types/json5": { @@ -17814,12 +16102,6 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, "@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -17836,21 +16118,9 @@ } }, "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "version": "16.18.121", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.121.tgz", + "integrity": "sha512-Gk/pOy8H0cvX8qNrwzElYIECpcUn87w4EAEFXFvPJ8qsP9QR/YqukUORSy0zmyDyvdo149idPpy4W6iC5aSbQA==" }, "@types/qs": { "version": "6.9.7", @@ -17872,6 +16142,16 @@ "@types/node": "*" } }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -17916,167 +16196,190 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.0.tgz", - "integrity": "sha512-eiREtqWRZ8aVJcNru7cT/AMVnYd9a2UHsfZT8MR1dW3UUEg6jDv9EQ9Cq4CUPZesyQ58YUpoAADGv71jY8RwgA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz", + "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.29.0", - "@typescript-eslint/scope-manager": "4.29.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.0.tgz", - "integrity": "sha512-FpNVKykfeaIxlArLUP/yQfv/5/3rhl1ov6RWgud4OgbqWLkEq7lqgQU9iiavZRzpzCRQV4XddyFz3wFXdkiX9w==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.29.0", - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/typescript-estree": "4.29.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - } + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/type-utils": "8.17.0", + "@typescript-eslint/utils": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" } }, "@typescript-eslint/parser": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.0.tgz", - "integrity": "sha512-+92YRNHFdXgq+GhWQPT2bmjX09X7EH36JfgN2/4wmhtwV/HPxozpCNst8jrWcngLtEVd/4zAwA6BKojAlf+YqA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", + "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.29.0", - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/typescript-estree": "4.29.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", + "debug": "^4.3.4" }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, "@typescript-eslint/scope-manager": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.0.tgz", - "integrity": "sha512-HPq7XAaDMM3DpmuijxLV9Io8/6pQnliiXMQUcAdjpJJSR+fdmbD/zHCd7hMkjJn04UQtCQBtshgxClzg6NIS2w==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", + "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/visitor-keys": "4.29.0" + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0" } }, - "@typescript-eslint/types": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.0.tgz", - "integrity": "sha512-2YJM6XfWfi8pgU2HRhTp7WgRw78TCRO3dOmSpAvIQ8MOv4B46JD2chnhpNT7Jq8j0APlIbzO1Bach734xxUl4A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.0.tgz", - "integrity": "sha512-8ZpNHDIOyqzzgZrQW9+xQ4k5hM62Xy2R4RPO3DQxMc5Rq5QkCdSpk/drka+DL9w6sXNzV5nrdlBmf8+x495QXQ==", + "@typescript-eslint/type-utils": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz", + "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/visitor-keys": "4.29.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/utils": "8.17.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true - }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } } } }, - "@typescript-eslint/visitor-keys": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.0.tgz", - "integrity": "sha512-LoaofO1C/jAJYs0uEpYMXfHboGXzOJeV118X4OsZu9f7rG7Pr9B3+4HTU8+err81rADa4xfQmAxnRnPAI2jp+Q==", + "@typescript-eslint/types": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", + "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", + "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.29.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } } }, + "@typescript-eslint/utils": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", + "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", + "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.17.0", + "eslint-visitor-keys": "^4.2.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + } + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "@uploadx/core": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@uploadx/core/-/core-6.1.1.tgz", @@ -18088,6 +16391,12 @@ "parse-duration": "^1.0.0" } }, + "@vscode/web-custom-data": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/@vscode/web-custom-data/-/web-custom-data-0.4.12.tgz", + "integrity": "sha512-bCemuvwCC84wJQbJoaPou86sjz9DUvZgGa6sAWQwzw7oIELD7z+WnUj2Rdsu8/8XPhKLcg3IswQ2+Pm3OMinIg==", + "dev": true + }, "@xmpp/base64": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/@xmpp/base64/-/base64-0.13.1.tgz", @@ -18368,9 +16677,9 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true }, "acorn-jsx": { @@ -18392,12 +16701,6 @@ "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -18422,7 +16725,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "devOptional": true, + "optional": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -18435,39 +16738,18 @@ "dev": true }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" } }, "array-flatten": { @@ -18477,15 +16759,16 @@ "dev": true }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, @@ -18495,21 +16778,42 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } }, "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" } }, "array.prototype.reduce": { @@ -18525,31 +16829,20 @@ } }, "arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" } }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -18557,9 +16850,9 @@ "dev": true }, "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" }, "async-mutex": { "version": "0.4.0", @@ -18568,14 +16861,6 @@ "dev": true, "requires": { "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - } } }, "asynckit": { @@ -18584,16 +16869,13 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "babel-plugin-jsx-pragmatic": { "version": "1.0.2", @@ -18613,32 +16895,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, "base-64": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", @@ -18675,7 +16931,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true + "optional": true }, "bitwise-xor": { "version": "0.0.0", @@ -18695,9 +16951,9 @@ "dev": true }, "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "requires": { "bytes": "3.1.2", @@ -18708,7 +16964,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -18717,7 +16973,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "bowser": { @@ -18816,12 +17072,6 @@ "lru-cache": "^6.0.0" } }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, "uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", @@ -18845,23 +17095,6 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -18892,20 +17125,17 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, - "call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -18917,31 +17147,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "dependencies": { - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - } - } - }, "caniuse-lite": { "version": "1.0.30001617", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz", @@ -18971,7 +17176,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "devOptional": true, + "optional": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -18992,48 +17197,15 @@ "safe-buffer": "^5.0.1" } }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - } - } - } - }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" } }, "clone-deep": { @@ -19084,16 +17256,6 @@ "integrity": "sha512-1lVRtdywv41zQO/xvI2wU8w6oFcUYT6T84YKSxN25KN4N4Kld3scLovt8FjDmD63Cm7HtyRWHjezt+IanXmkyA==", "dev": true }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", @@ -19153,21 +17315,16 @@ } }, "commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==" + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, - "component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -19214,9 +17371,9 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true }, "cookie-signature": { @@ -19225,12 +17382,6 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true - }, "core-js": { "version": "3.36.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz", @@ -19253,24 +17404,15 @@ } }, "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "dependencies": { - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - } + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" } }, "create-hash": { @@ -19308,9 +17450,9 @@ } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "requires": { "nice-try": "^1.0.4", @@ -19321,38 +17463,38 @@ } }, "css-functions-list": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", - "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true }, "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" } }, "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" } }, "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, "cssesc": { @@ -19362,12 +17504,30 @@ "dev": true }, "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, "requires": { - "css-tree": "^1.1.2" + "css-tree": "~2.2.0" + }, + "dependencies": { + "css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + } } }, "d": { @@ -19380,6 +17540,36 @@ "type": "^1.0.1" } }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -19390,43 +17580,13 @@ } }, "decache": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.0.tgz", - "integrity": "sha512-PppOuLiz+DFeaUvFXEYZjLxAkKiMYH/do/b/MxpDe/8AgKBi5GhZxridoVIbBq72GDbL36e4p0Ce2jTGUwwU+w==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz", + "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==", "requires": { "callsite": "^1.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } - } - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true - }, "decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -19443,9 +17603,9 @@ } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "defer-to-connect": { @@ -19454,13 +17614,13 @@ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" }, "define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" } }, "define-properties": { @@ -19473,16 +17633,6 @@ "object-keys": "^1.1.1" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -19508,9 +17658,9 @@ "dev": true }, "detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true }, "didyoumean2": { @@ -19543,40 +17693,40 @@ } }, "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "requires": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" } }, "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" } }, "dottie": { @@ -19623,9 +17773,9 @@ } }, "engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -19633,49 +17783,62 @@ "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1" }, "dependencies": { + "cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true + }, "debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, "engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "requires": { - "ansi-colors": "^4.1.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, "error-ex": { @@ -19688,49 +17851,56 @@ } }, "es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "requires": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.15" } }, "es-array-method-boxes-properly": { @@ -19738,14 +17908,44 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" } }, "es-to-primitive": { @@ -19804,33 +18004,35 @@ } }, "esbuild": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.2.tgz", - "integrity": "sha512-Rv/CJquZKE00irDLDpk9jmWmtxx1NW+MGpBbNNouaDY0oBwk806uJ51WpLaJBQUxhZqLauX2rrNol5lVQceHJw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "requires": { - "@esbuild/android-arm": "0.16.2", - "@esbuild/android-arm64": "0.16.2", - "@esbuild/android-x64": "0.16.2", - "@esbuild/darwin-arm64": "0.16.2", - "@esbuild/darwin-x64": "0.16.2", - "@esbuild/freebsd-arm64": "0.16.2", - "@esbuild/freebsd-x64": "0.16.2", - "@esbuild/linux-arm": "0.16.2", - "@esbuild/linux-arm64": "0.16.2", - "@esbuild/linux-ia32": "0.16.2", - "@esbuild/linux-loong64": "0.16.2", - "@esbuild/linux-mips64el": "0.16.2", - "@esbuild/linux-ppc64": "0.16.2", - "@esbuild/linux-riscv64": "0.16.2", - "@esbuild/linux-s390x": "0.16.2", - "@esbuild/linux-x64": "0.16.2", - "@esbuild/netbsd-x64": "0.16.2", - "@esbuild/openbsd-x64": "0.16.2", - "@esbuild/sunos-x64": "0.16.2", - "@esbuild/win32-arm64": "0.16.2", - "@esbuild/win32-ia32": "0.16.2", - "@esbuild/win32-x64": "0.16.2" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "escalade": { @@ -19849,53 +18051,57 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { + "@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -19931,9 +18137,9 @@ "dev": true }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -19942,12 +18148,12 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "escape-string-regexp": { @@ -19956,16 +18162,71 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-key": { @@ -19974,15 +18235,6 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -20009,31 +18261,44 @@ } } }, - "eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", - "dev": true, - "requires": {} - }, - "eslint-config-standard-with-typescript": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-20.0.0.tgz", - "integrity": "sha512-IoySf3r0a2+P3Z6GMjv8p1HuOQ6GWQbMpdt9G8uEbkGpnNWAGBXpgaiutbZHbaQAvG5pkVtYepCfHUxYbVDLCA==", + "eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, "requires": { - "@typescript-eslint/parser": "^4.0.0", - "eslint-config-standard": "^16.0.0" + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, + "eslint-config-love": { + "version": "84.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-84.1.1.tgz", + "integrity": "sha512-jkmS0xgiVYQCKb2McwgeGzQWze8iJPPusbKTUprVSoZE8EoMe8SzSl9me8iuF+DdOcuN5Vg2Ry11/OYG98D+zQ==", + "dev": true, + "requires": { + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^17.0.0", + "eslint-plugin-promise": "^7.0.0", + "typescript-eslint": "^8.3.0" } }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { "debug": { @@ -20054,9 +18319,9 @@ } }, "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", "dev": true, "requires": { "debug": "^3.2.7" @@ -20079,37 +18344,52 @@ } } }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" } }, "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -20119,42 +18399,12 @@ "esutils": "^2.0.2" } }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } - } - }, - "eslint-plugin-lit": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.13.0.tgz", - "integrity": "sha512-vKc67q6YQ+naYO1QuFpqMoTs3535yp8+0WB/8bzZRLr5NSOb4C6vZrD4se7S9XZtym5TxSVlIqa9QTWYISykQg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "requireindex": "^1.2.0" - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -20163,51 +18413,80 @@ } } }, - "eslint-plugin-promise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", - "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", - "dev": true, - "requires": {} - }, - "eslint-plugin-standard": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz", - "integrity": "sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "eslint-plugin-lit": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.15.0.tgz", + "integrity": "sha512-Yhr2MYNz6Ln8megKcX503aVZQln8wsywCG49g0heiJ/Qr5UjkE4pGr4Usez2anNcc7NvlvHbQWMYwWcgH3XRKA==", "dev": true, "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "requireindex": "^1.2.0" } }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "eslint-plugin-n": { + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", + "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.17.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.8.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.5", + "semver": "^7.5.3" }, "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true } } }, + "eslint-plugin-promise": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "esniff": { @@ -20231,45 +18510,23 @@ } }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "esrecurse": { @@ -20279,20 +18536,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -20345,9 +18594,9 @@ }, "dependencies": { "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -20387,89 +18636,38 @@ } } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, "express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -20477,10 +18675,10 @@ "vary": "~1.1.2" }, "dependencies": { - "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true }, "safe-buffer": { @@ -20518,58 +18716,6 @@ } } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -20577,9 +18723,9 @@ "dev": true }, "fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -20598,7 +18744,13 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", "dev": true }, "fast-xml-parser": { @@ -20650,18 +18802,26 @@ } }, "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", "statuses": "2.0.1", "unpipe": "~1.0.0" + }, + "dependencies": { + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + } } }, "find-cache-dir": { @@ -20693,9 +18853,9 @@ } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "fluent-ffmpeg": { @@ -20727,12 +18887,6 @@ "is-callable": "^1.1.3" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true - }, "form-data": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", @@ -20750,15 +18904,6 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -20790,7 +18935,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "optional": true }, "function-bind": { @@ -20809,12 +18953,6 @@ "functions-have-names": "^1.2.3" } }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -20832,14 +18970,15 @@ "dev": true }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-stdin": { @@ -20855,19 +18994,23 @@ "dev": true }, "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true + "get-tsconfig": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz", + "integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } }, "glob": { "version": "7.2.3", @@ -20891,12 +19034,6 @@ "is-glob": "^4.0.1" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -20920,13 +19057,10 @@ } }, "globals": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", - "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } + "version": "15.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", + "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", + "dev": true }, "globalthis": { "version": "1.0.3", @@ -20965,9 +19099,9 @@ } }, "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "requires": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -20983,25 +19117,17 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -21013,17 +19139,17 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" }, "has-symbols": { "version": "1.0.3", @@ -21031,63 +19157,11 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "has-symbols": "^1.0.3" } }, "hash-base": { @@ -21121,7 +19195,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "requires": { "function-bind": "^1.1.2" } @@ -21205,9 +19278,15 @@ } }, "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true + }, + "immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", "dev": true }, "import-fresh": { @@ -21220,24 +19299,12 @@ "resolve-from": "^4.0.0" } }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "inflection": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", @@ -21265,12 +19332,12 @@ "dev": true }, "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -21314,23 +19381,13 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" } }, "is-arrayish": { @@ -21351,7 +19408,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "optional": true, "requires": { "binary-extensions": "^2.0.0" } @@ -21365,33 +19422,26 @@ "has-tostringtag": "^1.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.2" } }, - "is-data-descriptor": { + "is-data-view": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", - "dev": true, + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "requires": { - "hasown": "^2.0.0" + "is-typed-array": "^1.1.13" } }, "is-date-object": { @@ -21399,25 +19449,6 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, - "is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -21437,18 +19468,18 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "devOptional": true, "requires": { "is-extglob": "^2.1.1" } }, "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" }, "is-number": { "version": "7.0.0", @@ -21464,10 +19495,10 @@ "has-tostringtag": "^1.0.0" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-object": { @@ -21494,11 +19525,11 @@ } }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" } }, "is-stream": { @@ -21524,11 +19555,11 @@ } }, "is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "requires": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" } }, "is-weakref": { @@ -21539,12 +19570,6 @@ "call-bind": "^1.0.2" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -21563,9 +19588,9 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, "jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==" + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==" }, "js-tokens": { "version": "4.0.0", @@ -21573,13 +19598,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsesc": { @@ -21613,7 +19637,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json5": { @@ -21636,9 +19660,9 @@ } }, "keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "requires": { "json-buffer": "3.0.1" } @@ -21649,9 +19673,9 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", + "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", "dev": true }, "koa-compose": { @@ -21682,233 +19706,62 @@ } }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "lit": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.4.0.tgz", - "integrity": "sha512-fdgzxEtLrZFQU/BqTtxFQCLwlZd9bdat+ltzSFjvWkZrs7eBmeX0L5MHUMb3kYIkuS8Xlfnii/iI5klirF8/Xg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", "dev": true, "requires": { - "@lit/reactive-element": "^1.4.0", - "lit-element": "^3.2.0", - "lit-html": "^2.4.0" - }, - "dependencies": { - "@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", - "dev": true, - "requires": { - "@lit-labs/ssr-dom-shim": "^1.0.0" - } - } + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" } }, "lit-analyzer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-1.2.1.tgz", - "integrity": "sha512-OEARBhDidyaQENavLbzpTKbEmu5rnAI+SdYsH4ia1BlGlLiqQXoym7uH1MaRPtwtUPbkhUfT4OBDZ+74VHc3Cg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lit-analyzer/-/lit-analyzer-2.0.3.tgz", + "integrity": "sha512-XiAjnwVipNrKav7r3CSEZpWt+mwYxrhPRVC7h8knDmn/HWTzzWJvPe+mwBcL2brn4xhItAMzZhFC8tzzqHKmiQ==", "dev": true, "requires": { + "@vscode/web-custom-data": "^0.4.2", "chalk": "^2.4.2", "didyoumean2": "4.1.0", - "fast-glob": "^2.2.6", + "fast-glob": "^3.2.11", "parse5": "5.1.0", - "ts-simple-type": "~1.0.5", + "ts-simple-type": "~2.0.0-next.0", "vscode-css-languageservice": "4.3.0", "vscode-html-languageservice": "3.1.0", - "web-component-analyzer": "~1.1.1" + "web-component-analyzer": "^2.0.0" }, "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } } } }, "lit-element": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", - "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.0.tgz", + "integrity": "sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==", "dev": true, "requires": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.8.0" - }, - "dependencies": { - "@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", - "dev": true, - "requires": { - "@lit-labs/ssr-dom-shim": "^1.0.0" - } - } + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" } }, "lit-html": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", - "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz", + "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==", "dev": true, "requires": { "@types/trusted-types": "^2.0.2" @@ -21956,7 +19809,7 @@ "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "log-rotate": { @@ -22037,27 +19890,6 @@ "semver": "^5.6.0" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -22075,9 +19907,9 @@ } }, "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, "media-typer": { @@ -22109,73 +19941,15 @@ "dev": true }, "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true }, "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true }, "merge-stream": { @@ -22238,12 +20012,6 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -22258,27 +20026,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -22394,34 +20141,15 @@ } }, "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "negotiator": { @@ -22442,6 +20170,13 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true + }, "node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -22579,9 +20314,9 @@ } }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -22593,82 +20328,44 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "object-hash": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" }, "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, "object.getownpropertydescriptors": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", @@ -22681,24 +20378,26 @@ "safe-array-concat": "^1.0.0" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "requires": { - "isobject": "^3.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "oidc-token-hash": { @@ -22742,28 +20441,28 @@ } }, "openid-client": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.5.tgz", - "integrity": "sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.0.tgz", + "integrity": "sha512-4GCCGZt1i2kTHpwvaC/sCpTpQqDnBzDzuJcJMbH+y1Q5qI8U8RBvoSh28svarXszZHR5BAMXbJPX1PGPRE3VOA==", "requires": { - "jose": "^4.15.5", + "jose": "^4.15.9", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" } }, "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" } }, "p-cancelable": { @@ -22860,18 +20559,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -22895,9 +20582,9 @@ "dev": true }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "path-type": { @@ -22913,9 +20600,9 @@ "dev": true }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "picomatch": { "version": "2.3.1", @@ -22947,21 +20634,20 @@ "find-up": "^3.0.0" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" }, "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" } }, "postcss-media-query-parser": { @@ -22971,29 +20657,29 @@ "dev": true }, "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", "dev": true }, "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, "requires": {} }, "postcss-scss": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.2.tgz", - "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, "requires": {} }, "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -23018,12 +20704,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "promisify-any": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promisify-any/-/promisify-any-2.0.1.tgz", @@ -23069,12 +20749,12 @@ "dev": true }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } }, "queue-microtask": { @@ -23120,79 +20800,6 @@ "unpipe": "1.0.0" } }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -23212,21 +20819,11 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, + "optional": true, "requires": { "picomatch": "^2.2.1" } }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, "redis-errors": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", @@ -23253,44 +20850,17 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -23303,12 +20873,6 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -23321,12 +20885,12 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -23342,10 +20906,10 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true }, "responselike": { @@ -23356,12 +20920,6 @@ "lowercase-keys": "^2.0.0" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, "retry-as-promised": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", @@ -23408,12 +20966,12 @@ "dev": true }, "safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -23430,22 +20988,13 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" } }, @@ -23488,12 +21037,32 @@ "integrity": "sha512-pVlvK5ysevz8MzybRnDIa2YMxn0OJ7b9lDiWhMoaKPoJ7YkAg/7YtNjUgaYzElkwHxsw8dBMhaEn7UP6zxEwPg==" }, "sass": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", - "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", + "version": "1.81.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.81.1.tgz", + "integrity": "sha512-VNLgf4FC5yFyKwAumAAwwNh8X4SevlVREq3Y8aDZIkm0lI/zO1feycMXQ4hn+eB6FVhRbleSQ1Yb/q8juSldTA==", "dev": true, "requires": { - "chokidar": ">=3.0.0 <4.0.0" + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "dependencies": { + "chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "requires": { + "readdirp": "^4.0.1" + } + }, + "readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true + } } }, "sax": { @@ -23508,9 +21077,9 @@ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" }, "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "requires": { "debug": "2.6.9", @@ -23618,62 +21187,49 @@ } }, "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "requires": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - } - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "send": "0.19.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true } } }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -23698,33 +21254,33 @@ } }, "sharp": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.2.tgz", - "integrity": "sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", "dev": true, "requires": { - "@img/sharp-darwin-arm64": "0.33.2", - "@img/sharp-darwin-x64": "0.33.2", - "@img/sharp-libvips-darwin-arm64": "1.0.1", - "@img/sharp-libvips-darwin-x64": "1.0.1", - "@img/sharp-libvips-linux-arm": "1.0.1", - "@img/sharp-libvips-linux-arm64": "1.0.1", - "@img/sharp-libvips-linux-s390x": "1.0.1", - "@img/sharp-libvips-linux-x64": "1.0.1", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1", - "@img/sharp-libvips-linuxmusl-x64": "1.0.1", - "@img/sharp-linux-arm": "0.33.2", - "@img/sharp-linux-arm64": "0.33.2", - "@img/sharp-linux-s390x": "0.33.2", - "@img/sharp-linux-x64": "0.33.2", - "@img/sharp-linuxmusl-arm64": "0.33.2", - "@img/sharp-linuxmusl-x64": "0.33.2", - "@img/sharp-wasm32": "0.33.2", - "@img/sharp-win32-ia32": "0.33.2", - "@img/sharp-win32-x64": "0.33.2", + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5", "color": "^4.2.3", - "detect-libc": "^2.0.2", - "semver": "^7.5.4" + "detect-libc": "^2.0.3", + "semver": "^7.6.3" }, "dependencies": { "color": { @@ -23753,13 +21309,10 @@ "dev": true }, "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true } } }, @@ -23795,13 +21348,14 @@ } }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -23897,117 +21451,17 @@ } } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, @@ -24089,24 +21543,11 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -24116,12 +21557,6 @@ "source-map": "^0.6.0" } }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -24154,27 +21589,6 @@ "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -24187,37 +21601,6 @@ "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - } - } - } - }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -24261,33 +21644,34 @@ } }, "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "strip-ansi": { @@ -24311,15 +21695,6 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -24332,85 +21707,143 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, - "style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", - "dev": true - }, "stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz", + "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==", "dev": true, "requires": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.1", + "debug": "^4.3.7", + "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", - "import-lazy": "^4.0.0", + "html-tags": "^3.3.1", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", + "meow": "^13.2.0", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", + "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "table": "^6.8.2", + "write-file-atomic": "^5.0.1" }, "dependencies": { + "@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "requires": {} + }, "balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "css-tree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", + "integrity": "sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==", "dev": true, "requires": { - "ms": "2.1.2" + "mdn-data": "2.12.1", + "source-map-js": "^1.0.1" } }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "file-entry-cache": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "dev": true, + "requires": { + "flat-cache": "^5.0.0" + } + }, + "flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "requires": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + } + }, + "ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true + }, "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "known-css-properties": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", "dev": true }, + "mdn-data": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.1.tgz", + "integrity": "sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -24420,52 +21853,63 @@ } }, "stylelint-config-recommended": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", - "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", + "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", "dev": true, "requires": {} }, "stylelint-config-recommended-scss": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz", - "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz", + "integrity": "sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==", "dev": true, "requires": { - "postcss-scss": "^4.0.2", - "stylelint-config-recommended": "^6.0.0", - "stylelint-scss": "^4.0.0" + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" } }, "stylelint-config-standard": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-23.0.0.tgz", - "integrity": "sha512-8PDlk+nWuc1T66nVaODTdVodN0pjuE5TBlopi39Lt9EM36YJsRhqttMyUhnS78oc/59Q6n8iw2GJB4QcoFqtRg==", + "version": "36.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", + "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", "dev": true, "requires": { - "stylelint-config-recommended": "^6.0.0" + "stylelint-config-recommended": "^14.0.1" } }, "stylelint-config-standard-scss": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-2.0.1.tgz", - "integrity": "sha512-TW5NLquUSS0mg2N31zzaSbYRbV/CMifSVLdpgo6VdGvjysgYqJOcKM/5bmXucTOsdfqomcPXetFZ3adC7nD+cg==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz", + "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==", "dev": true, "requires": { - "stylelint-config-recommended-scss": "^5.0.0", - "stylelint-config-standard": "^23.0.0" + "stylelint-config-recommended-scss": "^14.0.0", + "stylelint-config-standard": "^36.0.0" } }, "stylelint-scss": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", - "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.5.1.tgz", + "integrity": "sha512-ZLqdqihm6uDYkrsOeD6YWb+stZI8Wn92kUNDhE4M+g9g1aCnRv0JlOrttFiAJJwaNzpdQgX3YJb5vDQXVuO9Ww==", "dev": true, "requires": { + "css-tree": "2.3.1", + "is-plain-object": "5.0.0", + "known-css-properties": "^0.34.0", "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.11", + "postcss-resolve-nested-selector": "^0.1.4", + "postcss-selector-parser": "^6.1.1", "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } } }, "supports-color": { @@ -24486,9 +21930,9 @@ } }, "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -24516,18 +21960,18 @@ "dev": true }, "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "dev": true, "requires": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "dependencies": { "commander": { @@ -24539,9 +21983,9 @@ } }, "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "requires": { "ajv": "^8.0.1", @@ -24552,15 +21996,15 @@ }, "dependencies": { "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" } }, "json-schema-traverse": { @@ -24571,6 +22015,12 @@ } } }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -24580,7 +22030,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "thirty-two": { @@ -24604,38 +22054,6 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -24662,51 +22080,43 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", "dev": true }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "requires": {} + }, "ts-simple-type": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-1.0.7.tgz", - "integrity": "sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ==", + "version": "2.0.0-next.0", + "resolved": "https://registry.npmjs.org/ts-simple-type/-/ts-simple-type-2.0.0-next.0.tgz", + "integrity": "sha512-A+hLX83gS+yH6DtzNAhzZbPfU+D9D8lHlTSd7GeoMRBjOt3GRylDqLTYbdmjA4biWvq2xSfpqfIDj2l0OA/BVg==", "dev": true }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -24739,46 +22149,51 @@ } }, "typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" } }, "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" } }, "typedarray": { @@ -24788,11 +22203,22 @@ "dev": true }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true }, + "typescript-eslint": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz", + "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.17.0", + "@typescript-eslint/parser": "8.17.0", + "@typescript-eslint/utils": "8.17.0" + } + }, "uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -24813,26 +22239,6 @@ "which-boxed-primitive": "^1.0.2" } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -24845,46 +22251,6 @@ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true - } - } - }, "update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -24903,18 +22269,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -24932,12 +22286,6 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -24947,9 +22295,9 @@ } }, "validate-color": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/validate-color/-/validate-color-2.2.1.tgz", - "integrity": "sha512-1eDb1zqP6W6bbfKKl6dRXObelNoQpW7aF3BUTh2AivWuhcD0pa3ejwURWqrVsyKJMLBMlHLFcM3sj5J+dSFhbg==" + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/validate-color/-/validate-color-2.2.4.tgz", + "integrity": "sha512-Znolz+b6CwW6eBXYld7MFM3O7funcdyRfjKC/X9hqYV/0VcC5LB/L45mff7m3dIn9wdGdNOAQ/fybNuD5P/HDw==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -25022,21 +22370,21 @@ "dev": true }, "web-component-analyzer": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-1.1.7.tgz", - "integrity": "sha512-SqCqN4nU9fU+j0CKXJQ8E4cslLsaezhagY6xoi+hoNPPd55GzR6MY1r5jkoJUVu+g4Wy4uB+JglTt7au4vQ1uA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-2.0.0.tgz", + "integrity": "sha512-UEvwfpD+XQw99sLKiH5B1T4QwpwNyWJxp59cnlRwFfhUW6JsQpw5jMeMwi7580sNou8YL3kYoS7BWLm+yJ/jVQ==", "dev": true, "requires": { "fast-glob": "^3.2.2", - "ts-simple-type": "~1.0.5", - "typescript": "^3.8.3", - "yargs": "^15.3.1" + "ts-simple-type": "2.0.0-next.0", + "typescript": "~5.2.0", + "yargs": "^17.7.2" }, "dependencies": { "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true } } @@ -25076,22 +22424,16 @@ "is-symbol": "^1.0.3" } }, - "which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" } }, "winston": { @@ -25159,10 +22501,16 @@ "@types/node": "*" } }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -25202,13 +22550,21 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } } }, "ws": { @@ -25227,9 +22583,9 @@ } }, "xmppjs-chat-bot": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.3.0.tgz", - "integrity": "sha512-UJoYEiqC9Z1qEb/e4VWeNmSapfa+XzlhaqL4UyannEtj0gi2f8BbsOw9LRp5TdNnOQi1CPZY3xMRgxa9pps2TQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.5.0.tgz", + "integrity": "sha512-P+C2x00zS3Zd0PvkKeiT+cPYMQOW/pZu2pEG+iNkUjHU5MYBukn48aMgbzzPwJVQpk/9FuZZeK1m/pl3iD2KFA==", "requires": { "@xmpp/client": "^0.13.1", "@xmpp/component": "^0.13.1", @@ -25237,7 +22593,14 @@ "@xmpp/id": "^0.13.1", "@xmpp/jid": "^0.13.1", "@xmpp/xml": "^0.13.1", - "commander": "^11.0.0" + "commander": "^11.1.0" + }, + "dependencies": { + "commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==" + } } }, "xtend": { @@ -25247,9 +22610,9 @@ "dev": true }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { @@ -25258,75 +22621,37 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", "dev": true }, "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 7eecc0c3..5d5dba38 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "peertube-plugin-livechat", "description": "PeerTube plugin livechat: create chat rooms for your Peertube lives! Comes with many features: federation, moderation tools, chat bot, chat persistence, OBS integration, ...", - "version": "11.0.1", + "version": "12.0.0", "license": "AGPL-3.0", "author": { "name": "John Livingston", @@ -27,57 +27,56 @@ ], "dependencies": { "@xmpp/jid": "^0.13.1", - "async": "^3.2.2", - "decache": "^4.6.0", + "async": "^3.2.6", + "decache": "^4.6.2", "escape-html": "^1.0.3", - "got": "^11.8.2", + "got": "^11.8.6", "http-proxy": "^1.18.1", "log-rotate": "^0.2.8", - "openid-client": "^5.6.5", - "validate-color": "^2.2.1", - "xmppjs-chat-bot": "^0.3.0" + "openid-client": "^5.7.0", + "validate-color": "^2.2.4", + "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { + "@eslint/js": "^9.16.0", "@lit-labs/motion": "^1.0.7", - "@lit/context": "^1.1.1", - "@lit/task": "^1.0.0", - "@peertube/feed": "^5.1.0", + "@lit/context": "^1.1.3", + "@lit/task": "^1.0.1", + "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@tsconfig/node12": "^1.0.9", - "@types/async": "^3.2.9", + "@stylistic/eslint-plugin": "^2.11.0", + "@tsconfig/node16": "^16.1.3", + "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", - "@types/express": "^4.17.13", + "@types/eslint__js": "^8.42.3", + "@types/express": "^5.0.0", "@types/got": "^9.6.12", - "@types/http-proxy": "^1.17.9", - "@types/node": "^16.11.6", + "@types/http-proxy": "^1.17.15", + "@types/node": "^16.18.121", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", - "@typescript-eslint/eslint-plugin": "^4.29.0", - "@typescript-eslint/parser": "^4.29.0", - "commander": "^11.0.0", - "esbuild": "^0.16.1", - "eslint": "^7.32.0", - "eslint-config-standard": "^16.0.3", - "eslint-config-standard-with-typescript": "^20.0.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-lit": "^1.13.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.1", - "eslint-plugin-standard": "^5.0.0", - "lit": "^2.4.0", - "lit-analyzer": "^1.2.1", + "@typescript-eslint/parser": "^8.4.0", + "commander": "^12.1.0", + "esbuild": "^0.24.0", + "eslint": "^8.57.1", + "eslint-config-love": "^84.1.1", + "eslint-plugin-lit": "^1.15.0", + "globals": "^15.13.0", + "lit": "^3.2.1", + "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.43.4", - "sharp": "^0.33.2", - "stylelint": "^14.0.1", - "stylelint-config-recommended-scss": "^5.0.1", - "stylelint-config-standard-scss": "^2.0.1", - "svgo": "^2.8.0", - "typescript": "^4.9.5", - "yaml": "^2.2.1" + "sass": "^1.81.1", + "sharp": "^0.33.5", + "stylelint": "^16.11.0", + "stylelint-config-recommended-scss": "^14.1.0", + "stylelint-config-standard-scss": "^13.1.0", + "svgo": "^3.3.2", + "typescript": "^5.5.4", + "typescript-eslint": "^8.17.0", + "yaml": "^2.6.1" }, "engine": { - "peertube": ">=4.2.0" + "peertube": ">=5.2.0" }, "engines": { "npm": ">=7" @@ -108,8 +107,8 @@ "build": "npm-run-all -s clean:light build:languages check:client:tsc -s build:client build:server build:images build:styles build:avatars build:serverconverse build:prosodymodules build:converse build:prosody", "lint": "npm-run-all -s lint:script lint:lit lint:styles lint:reuse", "lint:fix": "npm-run-all -s lint:script:fix lint:styles:fix", - "lint:script": "npx eslint --ext .js --ext .ts .", - "lint:script:fix": "npx eslint --ext .js --ext .ts . --fix", + "lint:script": "npx eslint .", + "lint:script:fix": "npx eslint . --fix", "lint:lit": "npx lit-analyzer client/ conversejs/", "lint:styles": "stylelint 'conversejs/**/*.scss' 'assets/styles/**/*.scss'", "lint:styles:fix": "stylelint 'conversejs/**/*.scss' 'assets/styles/**/*.scss' --fix", diff --git a/prosody-modules/mod_http_peertubelivechat_manage_rooms/mod_http_peertubelivechat_manage_rooms.lua b/prosody-modules/mod_http_peertubelivechat_manage_rooms/mod_http_peertubelivechat_manage_rooms.lua index 86eeae15..69b1713b 100644 --- a/prosody-modules/mod_http_peertubelivechat_manage_rooms/mod_http_peertubelivechat_manage_rooms.lua +++ b/prosody-modules/mod_http_peertubelivechat_manage_rooms/mod_http_peertubelivechat_manage_rooms.lua @@ -16,6 +16,9 @@ module:depends"http"; local mod_muc_peertubelivechat_terms = module:depends"muc_peertubelivechat_terms"; local set_muc_terms = rawget(mod_muc_peertubelivechat_terms, "set_muc_terms"); +local mod_muc_peertubelivechat_restrict_message = module:depends"muc_peertubelivechat_restrict_message"; +local set_peertubelivechat_emoji_only_mode = rawget(mod_muc_peertubelivechat_restrict_message, "set_peertubelivechat_emoji_only_mode"); +local set_peertubelivechat_custom_emoji_regexp = rawget(mod_muc_peertubelivechat_restrict_message, "set_peertubelivechat_custom_emoji_regexp"); function check_auth(routes) local function check_request_auth(event) @@ -102,6 +105,18 @@ local function update_room(event) room._data.moderation_delay = config.moderation_delay; end end + if type(config.livechat_emoji_only) == "boolean" then + if set_peertubelivechat_emoji_only_mode then + if set_peertubelivechat_emoji_only_mode(room, config.livechat_emoji_only) then + must104 = true; + end + end + end + if type(config.livechat_custom_emoji_regexp) == "string" then + if set_peertubelivechat_custom_emoji_regexp then + set_peertubelivechat_custom_emoji_regexp(room, config.livechat_custom_emoji_regexp) + end + end if (type(config.livechat_muc_terms) == "string") then -- to easily detect if the value is given or not, we consider that the caller passes "" when terms must be deleted. if set_muc_terms then diff --git a/prosody-modules/mod_muc_http_defaults/mod_muc_http_defaults.lua b/prosody-modules/mod_muc_http_defaults/mod_muc_http_defaults.lua index 771498ad..7bbc5deb 100644 --- a/prosody-modules/mod_muc_http_defaults/mod_muc_http_defaults.lua +++ b/prosody-modules/mod_muc_http_defaults/mod_muc_http_defaults.lua @@ -9,6 +9,9 @@ -- * "mute_anonymous" -- * "moderation_delay" -- * "anonymize_moderation_actions" +-- * "livechat_emoji_only" +-- * "livechat_custom_emoji_regexp" +-- * "livechat_muc_terms" -- These options are introduced in the Peertube livechat plugin. -- -- The "slow_mode_duration" comes with mod_muc_slow_mode. @@ -128,6 +131,12 @@ local function apply_config(room, settings) if (type(config.mute_anonymous) == "boolean") then room._data.x_peertubelivechat_mute_anonymous = config.mute_anonymous; end + if (type(config.livechat_emoji_only) == "boolean") then + room._data.x_peertubelivechat_emoji_only_mode = config.livechat_emoji_only; + end + if (type(config.livechat_custom_emoji_regexp) == "string" and config.livechat_custom_emoji_regexp ~= "") then + room._data.x_peertubelivechat_custom_emoji_regexp = config.livechat_custom_emoji_regexp; + end if (type(config.livechat_muc_terms) == "string") then -- we don't need to use set_muc_terms here, as this is called for a newly created room -- (and thus we don't need to broadcast changes) diff --git a/prosody-modules/mod_muc_moderation_delay/config.lib.lua b/prosody-modules/mod_muc_moderation_delay/config.lib.lua index 7fbb1af2..8bcd63dd 100644 --- a/prosody-modules/mod_muc_moderation_delay/config.lib.lua +++ b/prosody-modules/mod_muc_moderation_delay/config.lib.lua @@ -12,6 +12,9 @@ local function set_moderation_delay(room, delay) end if delay ~= nil then delay = assert(tonumber(delay), "Moderation delay is not a valid number"); + if delay > 60 then + delay = 60; + end if delay < 0 then delay = nil; end diff --git a/prosody-modules/mod_muc_moderation_delay/delay.lib.lua b/prosody-modules/mod_muc_moderation_delay/delay.lib.lua index f5e2631b..03d8ec64 100644 --- a/prosody-modules/mod_muc_moderation_delay/delay.lib.lua +++ b/prosody-modules/mod_muc_moderation_delay/delay.lib.lua @@ -88,7 +88,7 @@ local function handle_broadcast_message(event) end local id = stanza.attr.id; if not id then - -- message should alway have an id, but just in case... + -- message should always have an id, but just in case... module:log("warn", "Message has no id, wont delay it."); return; end @@ -106,7 +106,7 @@ local function handle_broadcast_message(event) if stanza.attr.from then local from_occupant = room:get_occupant_by_nick(stanza.attr.from); if from_occupant and valid_roles[from_occupant.role or "none"] < moderator_role_value then - module:log("debug", "Message %s / %s must be sent separatly to it initialior %s.", id, stanza_id, delay, stanza.attr.from); + module:log("debug", "Message %s / %s must be sent separatly to it initiator %s.", id, stanza_id, delay, stanza.attr.from); room:route_to_occupant(from_occupant, stanza); end end @@ -114,7 +114,7 @@ local function handle_broadcast_message(event) -- adding a tag, so that moderators can know that this message is delayed. stanza:tag(moderation_delay_tag, { delay = "" .. delay; - waiting = string.format("%i", get_time() + delay); + waiting = string.format("%i", math.floor(get_time() + delay)); }):up(); -- then, sending to moderators (and only moderators): diff --git a/prosody-modules/mod_muc_peertubelivechat_announcements/README.markdown b/prosody-modules/mod_muc_peertubelivechat_announcements/README.markdown new file mode 100644 index 00000000..cd4fea72 --- /dev/null +++ b/prosody-modules/mod_muc_peertubelivechat_announcements/README.markdown @@ -0,0 +1,11 @@ + + +# mod_muc_peertubelivechat_announcements + +This modules performs some security check related to the Peertube livechat announcements. + +This module is part of peertube-plugin-livechat, and is under the same LICENSE. diff --git a/prosody-modules/mod_muc_peertubelivechat_announcements/mod_muc_peertubelivechat_announcements.lua b/prosody-modules/mod_muc_peertubelivechat_announcements/mod_muc_peertubelivechat_announcements.lua new file mode 100644 index 00000000..e1a54b9a --- /dev/null +++ b/prosody-modules/mod_muc_peertubelivechat_announcements/mod_muc_peertubelivechat_announcements.lua @@ -0,0 +1,44 @@ +-- mod_muc_peertubelivechat_announcements +-- +-- SPDX-FileCopyrightText: 2024 John Livingston +-- SPDX-License-Identifier: AGPL-3.0-only +-- +-- This file is AGPL-v3 licensed. +-- Please see the Peertube livechat plugin copyright information. +-- https://livingston.frama.io/peertube-plugin-livechat/credits/ +-- + +local st = require "util.stanza"; +local jid_bare = require "util.jid".bare; + +-- security check: only MUC owner/admin can add the x-livechat-announcement-type attribute on the body. +function handle_groupchat(event) + local origin, stanza = event.origin, event.stanza; + local room = event.room; + local body = stanza:get_child("body") + if not body or not body.attr then + return; + end + if not body.attr["x-livechat-announcement-type"] then + return; + end + + local from = stanza.attr.from; + local from_affiliation = room:get_affiliation(from); + if (from_affiliation == "owner" or from_affiliation == "admin") then + return; + end + + module:log("info", "Someone tried to spoof x-livechat-announcement-type, bouncing the message."); + local reply = st.error_reply( + stanza, + -- error_type = 'modify' (see descriptions in RFC 6120 https://xmpp.org/rfcs/rfc6120.html#stanzas-error-syntax) + "modify", + -- error_condition = 'policy-violation' (see RFC 6120 Defined Error Conditions https://xmpp.org/rfcs/rfc6120.html#stanzas-error-conditions) + "policy-violation", + "Only owner and admin can send announcements." + ); + origin.send(reply); + return true; -- stoping propagation +end +module:hook("muc-occupant-groupchat", handle_groupchat, 500); diff --git a/prosody-modules/mod_muc_peertubelivechat_restrict_message/README.markdown b/prosody-modules/mod_muc_peertubelivechat_restrict_message/README.markdown new file mode 100644 index 00000000..ccb0211c --- /dev/null +++ b/prosody-modules/mod_muc_peertubelivechat_restrict_message/README.markdown @@ -0,0 +1,14 @@ + +# mod_muc_peertubelivechat_restrict_message + +This module is a custom module designed for the peertube-plugin-livechat project, that can restrict message content to +given regular expression. + +This module is part of peertube-plugin-livechat, and is under the same LICENSE (AGPL-v3). + +## Prerequisites + +This modules needs lrexlib instlaled (available as lua-rex-pcre2 package on Debian). diff --git a/prosody-modules/mod_muc_peertubelivechat_restrict_message/mod_muc_peertubelivechat_restrict_message.lua b/prosody-modules/mod_muc_peertubelivechat_restrict_message/mod_muc_peertubelivechat_restrict_message.lua new file mode 100644 index 00000000..0ac27b65 --- /dev/null +++ b/prosody-modules/mod_muc_peertubelivechat_restrict_message/mod_muc_peertubelivechat_restrict_message.lua @@ -0,0 +1,135 @@ +-- mod_muc_peertubelivechat_roles +-- +-- SPDX-FileCopyrightText: 2024 John Livingston +-- SPDX-License-Identifier: AGPL-3.0-only +-- +-- This file is AGPL-v3 licensed. +-- Please see the Peertube livechat plugin copyright information. +-- https://livingston.frama.io/peertube-plugin-livechat/credits/ +-- + +local st = require "util.stanza"; +local jid_bare = require "util.jid".bare; + +local rex = require "rex_onig"; -- We are using Oniguruma because PCRE2 does not handle long regexp. +rex.setdefaultsyntax ("PERL"); + +-- Plugin dependencies +local mod_muc = module:depends "muc"; +local muc_util = module:require "muc/util"; +local valid_roles = muc_util.valid_roles; + +local common_emoji_regexp = assert(module:get_option_string('peertubelivechat_restrict_message_common_emoji_regexp'), 'Common emoji regexp is mandatory'); + +function get_peertubelivechat_emoji_only_mode(room) + return room._data.x_peertubelivechat_emoji_only_mode; +end + +function set_peertubelivechat_emoji_only_mode(room, emoji_only) + emoji_only = emoji_only and true or nil; + if get_peertubelivechat_emoji_only_mode(room) == emoji_only then return false; end + room._data.x_peertubelivechat_emoji_only_mode = emoji_only; + return true; +end + +function get_peertubelivechat_custom_emoji_regexp(room) + return room._data.x_peertubelivechat_custom_emoji_regexp; +end + +function set_peertubelivechat_custom_emoji_regexp(room, emoji_only_regexp) + if (emoji_only_regexp ~= nil and type(emoji_only_regexp) ~= "string") then + return false; + end + if emoji_only_regexp == "" then emoji_only_regexp = nil; end + if get_peertubelivechat_custom_emoji_regexp(room) == emoji_only_regexp then return false; end + room._data.x_peertubelivechat_custom_emoji_regexp = emoji_only_regexp; + + -- and we must decache the compile regexp + room.x_peertubelivechat_emoji_only_compiled_regexp = nil; + return true; +end + +module:hook("muc-disco#info", function(event) + if get_peertubelivechat_emoji_only_mode(event.room) then + event.reply:tag("feature", {var = "x_peertubelivechat_emoji_only_mode"}):up(); + end +end); + +module:hook("muc-config-form", function(event) + table.insert(event.form, { + name = "muc#roomconfig_x_peertubelivechat_emoji_only_mode"; + type = "boolean"; + label = "Emoji only mode"; + desc = "Occupants will only be able to send emoji. This does not affect moderators."; + value = get_peertubelivechat_emoji_only_mode(event.room); + }); +end, 122); + +module:hook("muc-config-submitted/muc#roomconfig_x_peertubelivechat_emoji_only_mode", function(event) + if set_peertubelivechat_emoji_only_mode(event.room, event.value) then + event.status_codes["104"] = true; + end +end); + + +-- handling groupchat messages +function handle_groupchat(event) + local origin, stanza = event.origin, event.stanza; + local room = event.room; + + if (not get_peertubelivechat_emoji_only_mode(room)) then + return; + end + + if not room.x_peertubelivechat_emoji_only_compiled_regexp then + -- compute the regexp on first access + local r = get_peertubelivechat_custom_emoji_regexp(room); + if (r == nil or r == "") then + r = common_emoji_regexp; + else + r = r .. "|" .. common_emoji_regexp; + end + r = "^\\s*(?:(?:" .. r .. ")\\s*)+\\s*$" + + room.x_peertubelivechat_emoji_only_compiled_regexp = rex.new(r, "i", "UTF8"); + end + + -- only consider messages with body (ie: ignore chatstate and other non-text xmpp messages) + local body = stanza:get_child_text("body") + if not body or #body < 1 then + -- module:log("debug", "No body, message accepted"); + return; + end + + -- Checking user's permissions (moderators are not subject to restrictions) + local actor = stanza.attr.from; + local actor_nick = room:get_occupant_jid(actor); + local actor_jid = jid_bare(actor); + -- Only checking role, not affiliation (restrictions only applies on users currently connected to the room) + local role = room:get_role(actor_nick); + if valid_roles[role or "none"] >= valid_roles.moderator then + -- user bypasses + -- module:log("debug", "User is moderator, bypassing restrictions"); + return; + end + + -- testing the content + if (room.x_peertubelivechat_emoji_only_compiled_regexp:match(body) ~= nil) then + -- module:log("debug", "Message accepted"); + return; + end + + module:log("debug", "Bouncing message for user %s", actor_nick); + local reply = st.error_reply( + stanza, + -- error_type = 'modify' (see descriptions in RFC 6120 https://xmpp.org/rfcs/rfc6120.html#stanzas-error-syntax) + "modify", + -- error_condition = 'policy-violation' (see RFC 6120 Defined Error Conditions https://xmpp.org/rfcs/rfc6120.html#stanzas-error-conditions) + "policy-violation", + "Emoji only mode enabled" + ); + + origin.send(reply); + return true; -- stoping propagation +end +module:hook("muc-occupant-groupchat", handle_groupchat); diff --git a/prosody-modules/mod_muc_poll/poll.lib.lua b/prosody-modules/mod_muc_poll/poll.lib.lua index 03ab69ad..6e5f3afe 100644 --- a/prosody-modules/mod_muc_poll/poll.lib.lua +++ b/prosody-modules/mod_muc_poll/poll.lib.lua @@ -72,7 +72,7 @@ local function end_current_poll (room) end local function schedule_poll_end (room_jid, timestamp) - local delay = timestamp - get_time(); + local delay = timestamp - math.floor(get_time()); if delay <= 0 then delay = 1; end @@ -101,7 +101,7 @@ local function create_poll(room, fields, occupant) module:log("debug", "Creating a new poll for room %s, by %s", room.jid, occupant.bare_jid); room._data.current_poll = fields; room._data.current_poll.poll_id = id.short(); - room._data.current_poll.end_timestamp = get_time() + (60 * fields["muc#roompoll_duration"]); + room._data.current_poll.end_timestamp = math.floor(get_time()) + (60 * fields["muc#roompoll_duration"]); room._data.current_poll.votes_by_occupant = {}; room._data.current_poll.votes_by_choices = {}; room._data.current_poll.choices_ordered = {}; -- choices labels with numerical index, so we can have correct order @@ -151,7 +151,7 @@ local function handle_groupchat(event) -- Ok, seems it is a vote. - if get_time() >= room._data.current_poll.end_timestamp then + if math.floor(get_time()) >= room._data.current_poll.end_timestamp then module:log("debug", "Got a vote for a finished poll, not counting it."); -- Note: we keep bouncing messages a few seconds/minutes after the poll end -- to be sure any user that send the vote too late won't expose his choice. @@ -222,7 +222,7 @@ local function room_restored(event) end module:log("info", "Restoring room %s with current ongoing poll.", room.jid); - local now = get_time(); + local now = math.floor(get_time()); if now >= room._data.current_poll.end_timestamp then module:log("info", "Current poll is over for room %s, ending it", room.jid); end_current_poll(room); diff --git a/server/.eslintrc.json b/server/.eslintrc.json deleted file mode 100644 index e0f785c7..00000000 --- a/server/.eslintrc.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "root": true, - "env": { - "browser": false, - "es6": true - }, - "extends": [ - "standard-with-typescript" - ], - "globals": {}, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2018, - "project": [ - "./server/tsconfig.json" - ] - }, - "plugins": [ - "@typescript-eslint" - ], - "ignorePatterns": [], - "rules": { - "@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_"}], - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/strict-boolean-expressions": "off", - "@typescript-eslint/return-await": [2, "in-try-catch"], // FIXME: correct? - "@typescript-eslint/no-invalid-void-type": "off", - "@typescript-eslint/triple-slash-reference": "off", - "max-len": [ - "error", - { - "code": 120, - "comments": 120 - } - ], - "no-unused-vars": "off" - } -} diff --git a/server/.eslintrc.json.license b/server/.eslintrc.json.license deleted file mode 100644 index b253ad42..00000000 --- a/server/.eslintrc.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2024 John Livingston - -SPDX-License-Identifier: AGPL-3.0-only diff --git a/server/lib/bots/ctl.ts b/server/lib/bots/ctl.ts index a583a0d9..198f52f7 100644 --- a/server/lib/bots/ctl.ts +++ b/server/lib/bots/ctl.ts @@ -88,7 +88,7 @@ class BotsCtl { moderationBotProcess.stderr?.on('data', (data) => { // change error level for non-relevant errors: data = data.toString() - if (/Warning.*NODE_TLS_REJECT_UNAUTHORIZED.*'0'.*TLS/.test(data)) { + if (/Warning.*NODE_TLS_REJECT_UNAUTHORIZED.*'0'.*TLS/.test(data as string)) { this.logger.debug(`ModerationBot stderr: ${data as string}`) return } @@ -123,9 +123,11 @@ class BotsCtl { } const p = new Promise((resolve, reject) => { try { - if (!this.moderationBotProcess) { resolve() } - const moderationBotProcess: ReturnType = - this.moderationBotProcess as ReturnType + if (!this.moderationBotProcess) { + resolve() + return + } + const moderationBotProcess: ReturnType = this.moderationBotProcess let resolved = false // Trying to kill, and force kill if it takes more than X seconds diff --git a/server/lib/configuration/bot.ts b/server/lib/configuration/bot.ts index 23a764ff..08c574c0 100644 --- a/server/lib/configuration/bot.ts +++ b/server/lib/configuration/bot.ts @@ -13,7 +13,7 @@ let singleton: BotConfiguration | undefined type RoomConfCache = null // already loaded, but file does not exist - | RoomConf // loaded, and contains the room conf + | RoomConf // loaded, and contains the room conf type ChannelCommonRoomConf = Omit @@ -189,7 +189,7 @@ class BotConfiguration { })).toString() config = JSON.parse(content) - } catch (err) { + } catch (_err) { this.logger.info('Error reading the moderation bot global configuration file, assuming it does not exists.') config = undefined } @@ -275,7 +275,7 @@ class BotConfiguration { content = (await fs.promises.readFile(filePath, { encoding: 'utf-8' })).toString() - } catch (err) { + } catch (_err) { this.logger.debug('Failed to read room conf file, assuming it does not exists') this.roomConfCache.set(roomJID, null) return null @@ -284,7 +284,7 @@ class BotConfiguration { let json: RoomConf try { json = JSON.parse(content) as RoomConf - } catch (err) { + } catch (_err) { this.logger.error(`Error parsing JSON file ${filePath}, assuming empty`) this.roomConfCache.set(roomJID, null) return null diff --git a/server/lib/configuration/channel/init.ts b/server/lib/configuration/channel/init.ts index 87788bd4..97e1119b 100644 --- a/server/lib/configuration/channel/init.ts +++ b/server/lib/configuration/channel/init.ts @@ -59,7 +59,7 @@ async function initChannelConfiguration (options: RegisterServerOptions): Promis logger.info(`Channel ${channelId} deleted, removing 'custom emojis' related stuff.`) try { - Emojis.singletonSafe()?.deleteChannelDefinition(channelId) + await Emojis.singletonSafe()?.deleteChannelDefinition(channelId) } catch (err) { logger.error(err) } @@ -87,7 +87,7 @@ async function initChannelConfiguration (options: RegisterServerOptions): Promis ]) await fillVideoCustomFields(options, video) - const hasChat = await videoHasWebchat({ + const hasChat = videoHasWebchat({ 'chat-per-live-video': !!settings['chat-per-live-video'], 'chat-all-lives': !!settings['chat-all-lives'], 'chat-all-non-lives': !!settings['chat-all-non-lives'], @@ -121,7 +121,9 @@ async function initChannelConfiguration (options: RegisterServerOptions): Promis // Note: no need to await here, would only degrade performances. // FIXME: should also update livechat_muc_terms if channel has changed. updateProsodyRoom(options, video.uuid, { - name: video.name + name: video.name, + // In case the channel changed: + livechat_custom_emoji_regexp: await Emojis.singletonSafe()?.getChannelCustomEmojisRegexp(video.channelId) }).then( () => {}, (err) => logger.error(err) diff --git a/server/lib/configuration/channel/sanitize.ts b/server/lib/configuration/channel/sanitize.ts index 8a72f9ed..86546744 100644 --- a/server/lib/configuration/channel/sanitize.ts +++ b/server/lib/configuration/channel/sanitize.ts @@ -4,7 +4,13 @@ import type { RegisterServerOptions } from '@peertube/peertube-types' import type { ChannelConfigurationOptions } from '../../../../shared/lib/types' -import { channelTermsMaxLength } from '../../../../shared/lib/constants' +import { + channelTermsMaxLength, + forbidSpecialCharsMaxTolerance, + forbidSpecialCharsDefaultTolerance, + noDuplicateDefaultDelay, + noDuplicateMaxDelay +} from '../../../../shared/lib/constants' /** * Sanitize data so that they can safely be used/stored for channel configuration configuration. @@ -17,39 +23,62 @@ import { channelTermsMaxLength } from '../../../../shared/lib/constants' async function sanitizeChannelConfigurationOptions ( _options: RegisterServerOptions, _channelId: number | string, - data: any + data: unknown ): Promise { - if (typeof data !== 'object') { + if (!_assertObjectType(data)) { throw new Error('Invalid data type') } - const botData = data.bot - if (typeof botData !== 'object') { + const botData = data.bot ?? {} + if (!_assertObjectType(botData)) { throw new Error('Invalid data.bot data type') } // slowMode not present in livechat <= 8.2.0: const slowModeData = data.slowMode ?? {} - slowModeData.duration ??= slowModeData.defaultDuration ?? 0 // v8.3.0 to 8.3.2: was in defaultDuration - - if (typeof slowModeData !== 'object') { + if (!_assertObjectType(slowModeData)) { throw new Error('Invalid data.slowMode data type') } + slowModeData.duration ??= slowModeData.defaultDuration ?? 0 // v8.3.0 to 8.3.2: was in defaultDuration const moderationData = data.moderation ?? {} // comes with livechat 10.3.0 + if (!_assertObjectType(moderationData)) { + throw new Error('Invalid data.moderation data type') + } moderationData.delay ??= 0 moderationData.anonymize ??= false // comes with livechat 11.0.0 // mute not present in livechat <= 10.2.0 const mute = data.mute ?? {} + if (!_assertObjectType(mute)) { + throw new Error('Invalid data.mute data type') + } mute.anonymous ??= false - if (typeof mute !== 'object') { - throw new Error('Invalid data.mute data type') + // forbidSpecialChars comes with livechat 12.0.0 + botData.forbidSpecialChars ??= { + enabled: false, + reason: '', + tolerance: forbidSpecialCharsDefaultTolerance, + applyToModerators: false + } + if (!_assertObjectType(botData.forbidSpecialChars)) { + throw new Error('Invalid data.bot.forbidSpecialChars data type') + } + + // noDuplicate comes with livechat 12.0.0 + botData.noDuplicate ??= { + enabled: false, + reason: '', + delay: noDuplicateDefaultDelay, + applyToModerators: false + } + if (!_assertObjectType(botData.noDuplicate)) { + throw new Error('Invalid data.bot.noDuplicate data type') } // terms not present in livechat <= 10.2.0 - let terms = data.terms + let terms = data.terms ?? undefined if (terms !== undefined && (typeof terms !== 'string')) { throw new Error('Invalid data.terms data type') } @@ -63,6 +92,8 @@ async function sanitizeChannelConfigurationOptions ( enabled: _readBoolean(botData, 'enabled'), nickname: _readSimpleInput(botData, 'nickname', true), forbiddenWords: await _readForbiddenWords(botData), + forbidSpecialChars: await _readForbidSpecialChars(botData), + noDuplicate: await _readNoDuplicate(botData), quotes: _readQuotes(botData), commands: _readCommands(botData) // TODO: bannedJIDs @@ -85,7 +116,11 @@ async function sanitizeChannelConfigurationOptions ( return result } -function _readBoolean (data: any, f: string): boolean { +function _assertObjectType (data: unknown): data is Record { + return !!data && (typeof data === 'object') && Object.keys(data).every(k => typeof k === 'string') +} + +function _readBoolean (data: Record, f: string): boolean { if (!(f in data)) { return false } @@ -95,11 +130,11 @@ function _readBoolean (data: any, f: string): boolean { return data[f] } -function _readInteger (data: any, f: string, min: number, max: number): number { +function _readInteger (data: Record, f: string, min: number, max: number): number { if (!(f in data)) { throw new Error('Missing integer value for field ' + f) } - const v = parseInt(data[f]) + const v = typeof data[f] === 'number' ? Math.trunc(data[f]) : parseInt(data[f] as string) if (isNaN(v)) { throw new Error('Invalid value type for field ' + f) } @@ -112,7 +147,7 @@ function _readInteger (data: any, f: string, min: number, max: number): number { return v } -function _readSimpleInput (data: any, f: string, strict?: boolean, noSpace?: boolean): string { +function _readSimpleInput (data: Record, f: string, strict?: boolean, noSpace?: boolean): string { if (!(f in data)) { return '' } @@ -121,7 +156,7 @@ function _readSimpleInput (data: any, f: string, strict?: boolean, noSpace?: boo } // Removing control characters. // eslint-disable-next-line no-control-regex - let s = (data[f] as string).replace(/[\u0000-\u001F\u007F-\u009F]/g, '') + let s = data[f].replace(/[\u0000-\u001F\u007F-\u009F]/g, '') if (strict) { // Replacing all invalid characters, no need to throw an error.. s = s.replace(/[^\p{L}\p{N}\p{Z}_-]$/gu, '') @@ -132,7 +167,7 @@ function _readSimpleInput (data: any, f: string, strict?: boolean, noSpace?: boo return s } -function _readStringArray (data: any, f: string): string[] { +function _readStringArray (data: Record, f: string): string[] { if (!(f in data)) { return [] } @@ -153,7 +188,7 @@ function _readStringArray (data: any, f: string): string[] { return result } -function _readMultiLineString (data: any, f: string): string { +function _readMultiLineString (data: Record, f: string): string { if (!(f in data)) { return '' } @@ -162,11 +197,11 @@ function _readMultiLineString (data: any, f: string): string { } // Removing control characters (must authorize \u001A: line feed) // eslint-disable-next-line no-control-regex - const s = (data[f] as string).replace(/[\u0000-\u0009\u001B-\u001F\u007F-\u009F]/g, '') + const s = data[f].replace(/[\u0000-\u0009\u001B-\u001F\u007F-\u009F]/g, '') return s } -async function _readRegExpArray (data: any, f: string): Promise { +async function _readRegExpArray (data: Record, f: string): Promise { // Note: this function can instanciate a lot of RegExp. // To avoid freezing the server, we make it async, and will validate each regexp in a separate tick. if (!(f in data)) { @@ -186,11 +221,11 @@ async function _readRegExpArray (data: any, f: string): Promise { } // value must be a valid regexp try { - async function _validate (): Promise { + async function _validate (v: string): Promise { // eslint-disable-next-line no-new new RegExp(v) } - await _validate() + await _validate(v) } catch (_err) { throw new Error('Invalid value in field ' + f) } @@ -199,12 +234,17 @@ async function _readRegExpArray (data: any, f: string): Promise { return result } -async function _readForbiddenWords (botData: any): Promise { +async function _readForbiddenWords ( + botData: Record +): Promise { if (!Array.isArray(botData.forbiddenWords)) { throw new Error('Invalid forbiddenWords data') } const result: ChannelConfigurationOptions['bot']['forbiddenWords'] = [] for (const fw of botData.forbiddenWords) { + if (!_assertObjectType(fw)) { + throw new Error('Invalid entry in botData.forbiddenWords') + } const regexp = !!fw.regexp let entries if (regexp) { @@ -229,12 +269,45 @@ async function _readForbiddenWords (botData: any): Promise +): Promise { + if (!_assertObjectType(botData.forbidSpecialChars)) { + throw new Error('Invalid forbidSpecialChars data') + } + const result: ChannelConfigurationOptions['bot']['forbidSpecialChars'] = { + enabled: _readBoolean(botData.forbidSpecialChars, 'enabled'), + reason: _readSimpleInput(botData.forbidSpecialChars, 'reason'), + tolerance: _readInteger(botData.forbidSpecialChars, 'tolerance', 0, forbidSpecialCharsMaxTolerance), + applyToModerators: _readBoolean(botData.forbidSpecialChars, 'applyToModerators') + } + return result +} + +async function _readNoDuplicate ( + botData: Record +): Promise { + if (!_assertObjectType(botData.noDuplicate)) { + throw new Error('Invalid forbidSpecialChars data') + } + const result: ChannelConfigurationOptions['bot']['noDuplicate'] = { + enabled: _readBoolean(botData.noDuplicate, 'enabled'), + reason: _readSimpleInput(botData.noDuplicate, 'reason'), + delay: _readInteger(botData.noDuplicate, 'delay', 0, noDuplicateMaxDelay), + applyToModerators: _readBoolean(botData.noDuplicate, 'applyToModerators') + } + return result +} + +function _readQuotes (botData: Record): ChannelConfigurationOptions['bot']['quotes'] { if (!Array.isArray(botData.quotes)) { throw new Error('Invalid quotes data') } const result: ChannelConfigurationOptions['bot']['quotes'] = [] for (const qs of botData.quotes) { + if (!_assertObjectType(qs)) { + throw new Error('Invalid entry in botData.quotes') + } const messages = _readStringArray(qs, 'messages') const delay = _readInteger(qs, 'delay', 1, 6000) @@ -246,12 +319,15 @@ function _readQuotes (botData: any): ChannelConfigurationOptions['bot']['quotes' return result } -function _readCommands (botData: any): ChannelConfigurationOptions['bot']['commands'] { +function _readCommands (botData: Record): ChannelConfigurationOptions['bot']['commands'] { if (!Array.isArray(botData.commands)) { throw new Error('Invalid commands data') } const result: ChannelConfigurationOptions['bot']['commands'] = [] for (const cs of botData.commands) { + if (!_assertObjectType(cs)) { + throw new Error('Invalid entry in botData.commands') + } const message = _readSimpleInput(cs, 'message') const command = _readSimpleInput(cs, 'command', false, true) diff --git a/server/lib/configuration/channel/storage.ts b/server/lib/configuration/channel/storage.ts index d9ecc1fe..b3439434 100644 --- a/server/lib/configuration/channel/storage.ts +++ b/server/lib/configuration/channel/storage.ts @@ -7,6 +7,10 @@ import type { ChannelConfigurationOptions } from '../../../../shared/lib/types' import type { ChannelCommonRoomConf } from '../../configuration/bot' import { RoomChannel } from '../../room-channel' import { sanitizeChannelConfigurationOptions } from '../../configuration/channel/sanitize' +import { + forbidSpecialCharsDefaultTolerance, + noDuplicateDefaultDelay +} from '../../../../shared/lib/constants' import * as fs from 'fs' import * as path from 'path' @@ -44,6 +48,18 @@ function getDefaultChannelConfigurationOptions (_options: RegisterServerOptions) enabled: false, nickname: 'Sepia', forbiddenWords: [], + forbidSpecialChars: { + enabled: false, + reason: '', + tolerance: forbidSpecialCharsDefaultTolerance, + applyToModerators: false + }, + noDuplicate: { + enabled: false, + reason: '', + delay: noDuplicateDefaultDelay, + applyToModerators: false + }, quotes: [], commands: [] }, @@ -113,6 +129,16 @@ function channelConfigurationOptionsToBotRoomConf ( handlersIds.set(id, true) handlers.push(_getForbiddenWordsHandler(id, v)) }) + if (channelConfigurationOptions.bot.forbidSpecialChars.enabled) { + const id = 'forbid_special_chars' + handlersIds.set(id, true) + handlers.push(_getForbidSpecialCharsHandler(id, channelConfigurationOptions.bot.forbidSpecialChars)) + } + if (channelConfigurationOptions.bot.noDuplicate.enabled) { + const id = 'no_duplicate' + handlersIds.set(id, true) + handlers.push(_getNoDuplicateHandler(id, channelConfigurationOptions.bot.noDuplicate)) + } channelConfigurationOptions.bot.quotes.forEach((v, i) => { const id = 'quote_' + i.toString() handlersIds.set(id, true) @@ -129,7 +155,7 @@ function channelConfigurationOptionsToBotRoomConf ( for (const handler of previousRoomConf.handlers) { if (!handlersIds.has(handler.id)) { // cloning to avoid issues... - const disabledHandler = JSON.parse(JSON.stringify(handler)) + const disabledHandler = JSON.parse(JSON.stringify(handler)) as typeof handler disabledHandler.enabled = false handlers.push(disabledHandler) } @@ -176,8 +202,8 @@ function _getForbiddenWordsHandler ( } else { // Here we must add word-breaks and escape entries. // We join all entries in one Regexp (for the same reason as above). - rule.regexp = '(?:' + - forbiddenWords.entries.map(s => { + rule.regexp = '(?:' + forbiddenWords.entries.map( + s => { s = _stringToWordRegexp(s) // Must add the \b... // ... but... won't work if the first (or last) char is an emoji. @@ -190,7 +216,8 @@ function _getForbiddenWordsHandler ( } // FIXME: this solution wont work for non-latin charsets. return s - }).join(')|(?:') + ')' + } + ).join(')|(?:') + ')' } if (forbiddenWords.reason) { @@ -202,6 +229,63 @@ function _getForbiddenWordsHandler ( return handler } +function _getForbidSpecialCharsHandler ( + id: string, + forbidSpecialChars: ChannelConfigurationOptions['bot']['forbidSpecialChars'] +): ConfigHandler { + const handler: ConfigHandler = { + type: 'moderate', + id, + enabled: true, + options: { + rules: [] + } + } + + // The regexp to find one invalid character: + // (Note: Emoji_Modifier and Emoji_Component should not be matched alones, but seems a reasonnable compromise to avoid + // complex regex). + let regexp = '[^' + + '\\s\\p{Letter}\\p{Number}\\p{Punctuation}\\p{Currency_Symbol}\\p{Emoji}\\p{Emoji_Component}\\p{Emoji_Modifier}' + + ']' + + if (forbidSpecialChars.tolerance > 0) { + // we must repeat ! + const a = [] + for (let i = 0; i <= forbidSpecialChars.tolerance; i++) { // N+1 values + a.push(regexp) + } + regexp = a.join('.*') + } + + const rule: any = { + name: id, + regexp, + modifiers: 'us', + reason: forbidSpecialChars.reason + } + handler.options.rules.push(rule) + handler.options.applyToModerators = !!forbidSpecialChars.applyToModerators + return handler +} + +function _getNoDuplicateHandler ( + id: string, + noDuplicate: ChannelConfigurationOptions['bot']['noDuplicate'] +): ConfigHandler { + const handler: ConfigHandler = { + type: 'no-duplicate', + id, + enabled: true, + options: { + reason: noDuplicate.reason, + delay: noDuplicate.delay, + applyToModerators: !!noDuplicate.applyToModerators + } + } + return handler +} + function _getQuotesHandler ( id: string, quotes: ChannelConfigurationOptions['bot']['quotes'][0] diff --git a/server/lib/conversejs/params.ts b/server/lib/conversejs/params.ts index 3430dabe..e2b3641f 100644 --- a/server/lib/conversejs/params.ts +++ b/server/lib/conversejs/params.ts @@ -100,7 +100,7 @@ async function getConverseJSParams ( externalAuthOIDC ??= [] externalAuthOIDC.push({ type: oidc.type, - buttonLabel: buttonLabel, + buttonLabel, url: authUrl }) } @@ -127,7 +127,7 @@ async function getConverseJSParams ( localWebsocketServiceUrl: localWsUri, remoteBoshServiceUrl: remoteConnectionInfos?.anonymous?.boshUri ?? null, remoteWebsocketServiceUrl: remoteConnectionInfos?.anonymous?.wsUri ?? null, - authenticationUrl: authenticationUrl, + authenticationUrl, autoViewerMode, theme: converseJSTheme, forceReadonly, @@ -150,7 +150,7 @@ function _interfaceParams ( transparent: InitConverseJSParams['transparent'] converseJSTheme: InitConverseJSParams['theme'] } { - let autoViewerMode: boolean = false + let autoViewerMode = false const forceReadonly: boolean | 'noscroll' = params.readonly ?? false if (!forceReadonly) { autoViewerMode = true // auto join the chat in viewer mode, if not logged in @@ -234,14 +234,14 @@ async function _connectionInfos ( params: GetConverseJSParamsParams, roomInfos: RoomInfos ): Promise<{ - prosodyDomain: string - localAnonymousJID: string - localBoshUri: string - localWsUri: string | null - remoteConnectionInfos: WCRemoteConnectionInfos | undefined - roomJID: string - customEmojisUrl?: string - } | InitConverseJSParamsError> { + prosodyDomain: string + localAnonymousJID: string + localBoshUri: string + localWsUri: string | null + remoteConnectionInfos: WCRemoteConnectionInfos | undefined + roomJID: string + customEmojisUrl?: string +} | InitConverseJSParamsError> { const { video, remoteChatInfos, channelId, roomKey } = roomInfos const prosodyDomain = await getProsodyDomain(options) diff --git a/server/lib/custom-fields.ts b/server/lib/custom-fields.ts index 53cf541a..bea3ac40 100644 --- a/server/lib/custom-fields.ts +++ b/server/lib/custom-fields.ts @@ -45,7 +45,7 @@ async function initCustomFields (options: RegisterServerOptions): Promise const body: any = params.body const video: Video | undefined = params.video - if (!video || !video.id) { + if (!video?.id) { return } if (!body.pluginData) return @@ -115,7 +115,7 @@ async function fillVideoRemoteLiveChat ( const infos = await getVideoLiveChatInfos(options, video) if (!infos) { return } - let ok: boolean = false + let ok = false // We must check if there is a compatible connection protocol... if (anonymousConnectionInfos(infos)) { // Connection ok using a remote anonymous account. That's enought. diff --git a/server/lib/database/channel.ts b/server/lib/database/channel.ts index af7daff7..0e273857 100644 --- a/server/lib/database/channel.ts +++ b/server/lib/database/channel.ts @@ -61,7 +61,7 @@ interface ChannelInfos { async function getChannelInfosById ( options: RegisterServerOptions, channelId: number, - restrictToLocalChannels: boolean = false + restrictToLocalChannels = false ): Promise { if (!channelId) { throw new Error('Missing channelId') diff --git a/server/lib/debug.ts b/server/lib/debug.ts index a05bd87e..9fd39490 100644 --- a/server/lib/debug.ts +++ b/server/lib/debug.ts @@ -27,11 +27,11 @@ interface DebugContent { } type DebugNumericValue = 'renewCertCheckInterval' -| 'renewSelfSignedCertInterval' -| 'logRotateEvery' -| 'logRotateCheckInterval' -| 'remoteServerInfosMaxAge' -| 'externalAccountPruneInterval' + | 'renewSelfSignedCertInterval' + | 'logRotateEvery' + | 'logRotateCheckInterval' + | 'remoteServerInfosMaxAge' + | 'externalAccountPruneInterval' type DebugBooleanValue = 'alwaysPublishXMPPRoom' | 'enablePodcastChatTagForNonLive' | 'useOpenSSL' @@ -87,7 +87,7 @@ function _getProsodyDebuggerOptions (options: RegisterServerOptions, json: any): if (!json.debug_prosody.debugger_path) { return undefined } if (typeof json.debug_prosody.debugger_path !== 'string') { return undefined } - const mobdebugPath = json.debug_prosody.debugger_path + const mobdebugPath = json.debug_prosody.debugger_path as string if (!fs.statSync(mobdebugPath).isDirectory()) { options.peertubeHelpers.logger.error('There should be a debugger, but cant find it. Path should be: ', mobdebugPath) diff --git a/server/lib/diagnostic/prosody.ts b/server/lib/diagnostic/prosody.ts index 35efd875..9bf87646 100644 --- a/server/lib/diagnostic/prosody.ts +++ b/server/lib/diagnostic/prosody.ts @@ -48,7 +48,8 @@ export async function diagProsody (test: string, options: RegisterServerOptions) if (process.arch !== 'x64' && process.arch !== 'x86_64' && process.arch !== 'arm64') { result.messages.push({ level: 'error', - message: 'Error: your CPU is a ' + + message: + 'Error: your CPU is a ' + process.arch + ', ' + 'which is not compatible with the plugin. ' + 'Please read the plugin installation documentation for a workaround.' @@ -235,7 +236,7 @@ export async function diagProsody (test: string, options: RegisterServerOptions) title: 'Prosody error log (last 50 lines)', message: logLines.join('\n') }) - } catch (error) { + } catch (_err) { // Error should be because file does not exists. This is not an error case, just ignoring. } diff --git a/server/lib/diagnostic/utils.ts b/server/lib/diagnostic/utils.ts index e7e68f59..d4cec2f8 100644 --- a/server/lib/diagnostic/utils.ts +++ b/server/lib/diagnostic/utils.ts @@ -3,8 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only type NextValue = 'backend' | 'debug' | 'webchat-video' | 'prosody' -| 'external-auth-custom-oidc' | 'external-auth-google-oidc' | 'external-auth-facebook-oidc' -| 'everything-ok' + | 'external-auth-custom-oidc' | 'external-auth-google-oidc' | 'external-auth-facebook-oidc' + | 'everything-ok' interface MessageWithLevel { level: 'info' | 'warning' | 'error' @@ -28,7 +28,7 @@ export interface TestResult { export function newResult (test: string): TestResult { return { - test: test, + test, ok: false, messages: [], debug: [], diff --git a/server/lib/diagnostic/video.ts b/server/lib/diagnostic/video.ts index 20d4d59a..ae52309b 100644 --- a/server/lib/diagnostic/video.ts +++ b/server/lib/diagnostic/video.ts @@ -26,7 +26,7 @@ export async function diagVideo (test: string, { settingsManager }: RegisterServ result.messages.push('Displaying «open in new window» button') } - let atLeastOne: boolean = false + let atLeastOne = false if (videoSettings['chat-per-live-video']) { result.messages.push('Chat can be enabled on live videos.') atLeastOne = true diff --git a/server/lib/emojis/emojis.ts b/server/lib/emojis/emojis.ts index ccd08f24..359edd20 100644 --- a/server/lib/emojis/emojis.ts +++ b/server/lib/emojis/emojis.ts @@ -23,6 +23,7 @@ export class Emojis { protected channelBasePath: string protected channelBaseUri: string protected readonly channelCache = new Map() + protected readonly commonEmojisCodes: string[] protected readonly logger: { debug: (s: string) => void info: (s: string) => void @@ -30,9 +31,10 @@ export class Emojis { error: (s: string) => void } - constructor (options: RegisterServerOptions) { + constructor (options: RegisterServerOptions, commonEmojisCodes: string[]) { const logger = options.peertubeHelpers.logger this.options = options + this.commonEmojisCodes = commonEmojisCodes this.channelBasePath = path.join( options.peertubeHelpers.plugin.getDataDirectoryPath(), 'emojis', @@ -76,12 +78,13 @@ export class Emojis { if (!await this.channelHasCustomEmojis(channelId)) { return undefined } + const route = getBaseRouterRoute(this.options) + + 'emojis/channel/' + + encodeURIComponent(channelId) + + '/definition' return canonicalizePluginUri( this.options, - getBaseRouterRoute(this.options) + - 'emojis/channel/' + - encodeURIComponent(channelId) + - '/definition', + route, { removePluginVersion: true } @@ -112,7 +115,7 @@ export class Emojis { // File does not exist, this is normal. return undefined } - throw err + throw err as Error } return JSON.parse(content.toString()) } @@ -138,9 +141,11 @@ export class Emojis { /** * Test if short name is valid. + * * @param sn short name */ public validShortName (sn: any): boolean { + // Important note: do not change this without checking if it can breaks getChannelCustomEmojisRegexp. if ((typeof sn !== 'string') || !/^:?[\w-]+:?$/.test(sn)) { this.logger.debug('Short name invalid: ' + (typeof sn === 'string' ? sn : '???')) return false @@ -312,7 +317,7 @@ export class Emojis { } const result: ChannelEmojis = { - customEmojis: customEmojis + customEmojis } return [result, buffersInfos] } @@ -383,13 +388,42 @@ export class Emojis { }) } catch (err: any) { if (!(('code' in err) && err.code === 'ENOENT')) { - this.logger.error(err) + this.logger.error(err as string) } } finally { this.channelCache.delete(channelId) } } + /** + * Returns a string representing a regular expression validating channel custom emojis. + * This is used for the emoji only mode (test are made on the Prosody server). + * + * @param channelId channel id + */ + public async getChannelCustomEmojisRegexp (channelId: number): Promise { + const parts = [] + + if (await this.channelHasCustomEmojis(channelId)) { + const def = await this.channelCustomEmojisDefinition(channelId) + if (def) { + parts.push(...def.customEmojis.map(d => d.sn)) + } + } + + if (parts.length === 0) { + return undefined + } + + // Note: validShortName should ensure we won't put special chars. + return parts.join('|') + } + + public getCommonEmojisRegexp (): string { + // We assume that there is no special regexp chars (should only contains unicode emojis) + return this.commonEmojisCodes.join('|') + } + /** * Returns the singleton, of thrown an exception if it is not initialized yet. * Please note that this singleton won't exist if feature is disabled. @@ -416,10 +450,14 @@ export class Emojis { */ public static async initSingleton (options: RegisterServerOptions): Promise { const disabled = await options.settingsManager.getSetting('disable-channel-configuration') + + // Loading common emojis codes + const commonEmojisCodes = await _getConverseEmojiCodes(options) + if (disabled) { singleton = undefined } else { - singleton = new Emojis(options) + singleton = new Emojis(options, commonEmojisCodes) } } @@ -431,3 +469,51 @@ export class Emojis { singleton = undefined } } + +async function _getConverseEmojiCodes (options: RegisterServerOptions): Promise { + try { + // build-converse.sh copy the file emoji.json to /dist/converse-emoji.json + const converseEmojiDefPath = path.join(__dirname, '..', '..', '..', 'converse-emoji.json') + options.peertubeHelpers.logger.debug('Loading Converse Emojis from file ' + converseEmojiDefPath) + + const converseEmojis: Record = JSON.parse( + (await fs.promises.readFile(converseEmojiDefPath)).toString() + ) + + const r = [] + for (const [key, block] of Object.entries(converseEmojis)) { + if (key === 'custom') { continue } // These are not used. + r.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + ...Object.values(block) + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + .map((d: any) => d.cp ? _emojiCpToRegexp(d.cp) : d.sn) + .filter((sn: string) => sn && sn !== '') + ) + } + return r + } catch (err) { + options.peertubeHelpers.logger.error( + 'Failed to load Converse Emojis file, emoji only mode will be buggy. ' + (err as string) + ) + return [] + } +} + +/** + * Converts unicode code points and code pairs to the corresponding Regexp class. + * See ConverseJS emoji/utils.js for more info. + * @param {string} unicode + */ +function _emojiCpToRegexp (unicode: string): string { + if (unicode.includes('-')) { + const parts = [] + const s = unicode.split('-') + + for (let i = 0; i < s.length; i++) { + parts.push('\\x{' + s[i] + '}') + } + return parts.join('') + } + return '\\x{' + unicode + '}' +} diff --git a/server/lib/external-auth/oidc.ts b/server/lib/external-auth/oidc.ts index b2780450..62b16d55 100644 --- a/server/lib/external-auth/oidc.ts +++ b/server/lib/external-auth/oidc.ts @@ -238,7 +238,7 @@ class ExternalAuthOIDC { this.logger.debug('OIDC Discovery url is valid: ' + uri.toString()) this.providerHostName = uri.hostname - } catch (err) { + } catch (_err) { errors.push('Invalid discovery url') } } @@ -349,11 +349,17 @@ class ExternalAuthOIDC { if (!encryptedCodeVerifier) { throw new Error('Received callback but code verifier not found in request cookies.') } + if (typeof encryptedCodeVerifier !== 'string') { + throw new Error('Invalid code-verifier type.') + } const encryptedState = req.cookies[this.cookieNamePrefix + 'state'] if (!encryptedState) { throw new Error('Received callback but state not found in request cookies.') } + if (typeof encryptedState !== 'string') { + throw new Error('Invalid state data type') + } const codeVerifier = await this.decrypt(encryptedCodeVerifier) const state = await this.decrypt(encryptedState) @@ -447,11 +453,11 @@ class ExternalAuthOIDC { const encryptedArray = data.split(':') const iv = Buffer.from(encryptedArray[0], outputEncoding) - const encrypted = Buffer.from(encryptedArray[1], outputEncoding) + const encrypted = encryptedArray[1] const decipher = createDecipheriv(algorithm, this.secretKey, iv) - // FIXME: dismiss the "as any" below (dont understand why Typescript is not happy without) - return decipher.update(encrypted as any, outputEncoding, inputEncoding) + decipher.final(inputEncoding) + // here we must revert outputEncoding and inputEncoding, as were are decrypting. + return decipher.update(encrypted, outputEncoding, inputEncoding) + decipher.final(inputEncoding) } /** @@ -491,8 +497,11 @@ class ExternalAuthOIDC { if (typeof o.nickname !== 'string' || o.nickname === '') { throw new Error('No nickname') } + if (typeof o.expire !== 'string' || o.expire === '') { + throw new Error('Invalid expire data type') + } - const expire = new Date(Date.parse(o.expire)) + const expire = new Date(Date.parse(o.expire as string)) if (!(expire instanceof Date) || isNaN(expire.getTime())) { throw new Error('Invalid expire date') } @@ -548,7 +557,7 @@ class ExternalAuthOIDC { if (!(field in userInfos)) { continue } if (typeof userInfos[field] !== 'string') { continue } if (userInfos[field] === '') { continue } - return userInfos[field] as string + return userInfos[field] } return undefined } @@ -571,7 +580,7 @@ class ExternalAuthOIDC { responseType: 'buffer' }).buffer() - const mimeType = await getMimeTypeFromArrayBuffer(buf) + const mimeType = getMimeTypeFromArrayBuffer(buf as ArrayBuffer) if (!mimeType) { throw new Error('Failed to get the avatar file type') } @@ -603,7 +612,7 @@ class ExternalAuthOIDC { const filePath = path.resolve(this.avatarsDir, file) const buf = await fs.promises.readFile(filePath) - const mimeType = await getMimeTypeFromArrayBuffer(buf) + const mimeType = getMimeTypeFromArrayBuffer(buf) if (!mimeType) { throw new Error('Failed to get the default avatar file type') } @@ -748,6 +757,7 @@ class ExternalAuthOIDC { * @throws Error * @returns the singleton */ + // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents public static singleton (singletonType: ExternalAuthOIDCType | string): ExternalAuthOIDC { if (!singletons) { throw new Error('ExternalAuthOIDC singletons are not initialized yet') @@ -778,7 +788,7 @@ class ExternalAuthOIDC { const m = token.match(/^(\w+)-/) if (!m) { return null } return ExternalAuthOIDC.singleton(m[1]) - } catch (err) { + } catch (_err) { return null } } diff --git a/server/lib/federation/init.ts b/server/lib/federation/init.ts index 786a80a3..6c64ad15 100644 --- a/server/lib/federation/init.ts +++ b/server/lib/federation/init.ts @@ -21,7 +21,7 @@ export async function initFederation (options: RegisterServerOptions): Promise { + handler: async (jsonld: any[]) => { return videoContextBuildJSONLD(options, jsonld) } }) diff --git a/server/lib/federation/outgoing.ts b/server/lib/federation/outgoing.ts index 92fe5e6d..811038aa 100644 --- a/server/lib/federation/outgoing.ts +++ b/server/lib/federation/outgoing.ts @@ -56,7 +56,7 @@ async function videoBuildJSONLD ( } await fillVideoCustomFields(options, video) - const hasChat = await videoHasWebchat({ + const hasChat = videoHasWebchat({ 'chat-per-live-video': !!settings['chat-per-live-video'], 'chat-all-lives': !!settings['chat-all-lives'], 'chat-all-non-lives': !!settings['chat-all-non-lives'], diff --git a/server/lib/federation/sanitize.ts b/server/lib/federation/sanitize.ts index 848a5372..35275e2a 100644 --- a/server/lib/federation/sanitize.ts +++ b/server/lib/federation/sanitize.ts @@ -169,7 +169,7 @@ function sanitizePeertubeLiveChatServerInfos ( */ function sanitizeCustomEmojisUrl ( options: RegisterServerOptions, - customEmojisUrl: any, + customEmojisUrl: unknown, referenceUrl?: string ): string | undefined { let checkHost: undefined | string @@ -206,8 +206,8 @@ interface URLConstraints { domain?: string } -function _validUrl (s: string, constraints: URLConstraints): boolean { - if ((typeof s) !== 'string') { return false } +function _validUrl (s: unknown, constraints: URLConstraints): s is string { + if (typeof s !== 'string') { return false } if (s === '') { return false } let url: URL try { @@ -265,13 +265,13 @@ function _validateHost (s: any, mustBeSubDomainOf?: string): false | string { } } -function _readReferenceUrl (s: any): undefined | string { +function _readReferenceUrl (s: unknown): undefined | string { try { if (typeof s !== 'string') { return undefined } if (!s.startsWith('https://') && !s.startsWith('http://')) { s = 'http://' + s } - const url = new URL(s) + const url = new URL(s as string) const host = url.hostname // Just to avoid some basic spoofing, we must check that host is not simply something like "com". // We will check if there is at least one dot. This test is not perfect, but can limit spoofing cases. @@ -283,16 +283,16 @@ function _readReferenceUrl (s: any): undefined | string { } function _sanitizePeertubeLiveChatInfosV0 ( - options: RegisterServerOptions, chatInfos: any, referenceUrl?: string + options: RegisterServerOptions, chatInfos: unknown, referenceUrl?: string ): LiveChatJSONLDAttributeV1 { const logger = options.peertubeHelpers.logger logger.debug('We are have to migrate data from the old JSONLD format') if (chatInfos === false) { return false } - if (typeof chatInfos !== 'object') { return false } + if (!_assertObjectType(chatInfos)) { return false } if (chatInfos.type !== 'xmpp') { return false } - if ((typeof chatInfos.jid) !== 'string') { return false } + if (typeof chatInfos.jid !== 'string') { return false } // no link? invalid! dropping all. if (!Array.isArray(chatInfos.links)) { return false } @@ -327,10 +327,10 @@ function _sanitizePeertubeLiveChatInfosV0 ( } for (const link of chatInfos.links) { - if ((typeof link) !== 'object') { continue } + if (!_assertObjectType(link) || (typeof link.type !== 'string')) { continue } if (['xmpp-bosh-anonymous', 'xmpp-websocket-anonymous'].includes(link.type)) { - if ((typeof link.jid) !== 'string') { continue } - if ((typeof link.url) !== 'string') { continue } + if (typeof link.jid !== 'string') { continue } + if (typeof link.url !== 'string') { continue } if ( !_validUrl(link.url, { @@ -372,6 +372,10 @@ function sanitizeXMPPHostFromInstanceUrl (_options: RegisterServerOptions, s: an } } +function _assertObjectType (data: unknown): data is Record { + return !!data && (typeof data === 'object') && Object.keys(data).every(k => typeof k === 'string') +} + export { sanitizePeertubeLiveChatInfos, sanitizePeertubeLiveChatServerInfos, diff --git a/server/lib/federation/storage.ts b/server/lib/federation/storage.ts index ab111ad6..9703409a 100644 --- a/server/lib/federation/storage.ts +++ b/server/lib/federation/storage.ts @@ -307,6 +307,7 @@ async function _store (options: RegisterServerOptions, filePath: string, content } } +// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents async function _get (options: RegisterServerOptions, filePath: string): Promise { const logger = options.peertubeHelpers.logger try { diff --git a/server/lib/firewall/config.ts b/server/lib/firewall/config.ts index e29eaa88..b1a46767 100644 --- a/server/lib/firewall/config.ts +++ b/server/lib/firewall/config.ts @@ -75,7 +75,7 @@ export async function listModFirewallFiles ( }) return files.map(f => path.join(dir, f.name)).sort() - } catch (err) { + } catch (_err) { // should be that the directory does not exists return [] } @@ -148,7 +148,7 @@ export async function sanitizeModFirewallConfig ( throw new Error('Invalid data in data.files (content)') } - if (entry.name.length > maxFirewallNameLength || !firewallNameRegexp.test(entry.name)) { + if (entry.name.length > maxFirewallNameLength || !firewallNameRegexp.test(entry.name as string)) { throw new Error('Invalid name in data.files') } if (entry.content.length > maxFirewallFileSize) { diff --git a/server/lib/middlewares/async.ts b/server/lib/middlewares/async.ts index 1ea90bdf..8a6c8a47 100644 --- a/server/lib/middlewares/async.ts +++ b/server/lib/middlewares/async.ts @@ -6,22 +6,57 @@ import { eachSeries } from 'async' import type { NextFunction, Request, RequestHandler, Response } from 'express' // Syntactic sugar to avoid try/catch in express controllers -// Thanks: https://medium.com/@Abazhenov/using-async-await-in-express-with-node-8-b8af872c0016 export type RequestPromiseHandler = ((req: Request, res: Response, next: NextFunction) => Promise) -function asyncMiddleware (fun: RequestPromiseHandler | RequestPromiseHandler[]): RequestHandler { +// type asyncMiddleWareFunction = (req: Request, res: Response, next: NextFunction) => Promise +// function asyncMiddleware (fun: RequestPromiseHandler | RequestPromiseHandler[]): asyncMiddleWareFunction { +// return async (req: Request, res: Response, next: NextFunction): Promise => { +// if (!Array.isArray(fun)) { +// // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression +// Promise.resolve((fun as RequestHandler)(req, res, next)) +// .catch(err => { next(err) }) +// return +// } + +// try { +// for (const f of fun) { +// await new Promise((resolve, reject) => { +// // eslint-disable-next-line @typescript-eslint/no-floating-promises +// asyncMiddleware(f)(req, res, err => { +// if (err) { +// reject(err) +// return +// } +// resolve() +// }) +// }) +// } + +// next() +// } catch (err) { +// next(err) +// } +// } +// } + +function asyncMiddleware (fun: RequestPromiseHandler | RequestPromiseHandler[]) { return (req: Request, res: Response, next: NextFunction) => { if (Array.isArray(fun)) { eachSeries(fun as RequestHandler[], (f, cb) => { - Promise.resolve(f(req, res, (err: any) => cb(err))) - .catch(err => next(err)) + // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression + Promise.resolve(f(req, res, (err: any) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + cb(err) + })) + .catch(err => { next(err) }) }, next) return } + // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression Promise.resolve((fun as RequestHandler)(req, res, next)) - .catch(err => next(err)) + .catch(err => { next(err) }) } } diff --git a/server/lib/prosody/api/manage-rooms.ts b/server/lib/prosody/api/manage-rooms.ts index 064608d5..f7358045 100644 --- a/server/lib/prosody/api/manage-rooms.ts +++ b/server/lib/prosody/api/manage-rooms.ts @@ -65,6 +65,8 @@ async function updateProsodyRoom ( name?: string slow_mode_duration?: number moderation_delay?: number + livechat_emoji_only?: boolean + livechat_custom_emoji_regexp?: string livechat_muc_terms?: string addAffiliations?: Affiliations removeAffiliationsFor?: string[] @@ -100,6 +102,12 @@ async function updateProsodyRoom ( if ('livechat_muc_terms' in data) { apiData.livechat_muc_terms = data.livechat_muc_terms ?? '' } + if ('livechat_emoji_only' in data) { + apiData.livechat_emoji_only = data.livechat_emoji_only ?? false + } + if ('livechat_custom_emoji_regexp' in data) { + apiData.livechat_custom_emoji_regexp = data.livechat_custom_emoji_regexp ?? '' + } if (('addAffiliations' in data) && data.addAffiliations !== undefined) { apiData.addAffiliations = data.addAffiliations } @@ -107,7 +115,7 @@ async function updateProsodyRoom ( apiData.removeAffiliationsFor = data.removeAffiliationsFor } try { - logger.debug('Calling update room API on url: ' + apiUrl + ', with data: ' + JSON.stringify(apiData)) + logger.debug('Calling update room API on url: ' + apiUrl) const result = await got(apiUrl, { method: 'POST', headers: { diff --git a/server/lib/prosody/auth.ts b/server/lib/prosody/auth.ts index dfd47ab8..a47dff95 100644 --- a/server/lib/prosody/auth.ts +++ b/server/lib/prosody/auth.ts @@ -65,8 +65,8 @@ export class LivechatProsodyAuth { private readonly _prosodyDomain: string private _userTokensEnabled: boolean private readonly _tokensPath: string - private readonly _passwords: Map = new Map() - private readonly _tokensInfoByJID: Map = new Map() + private readonly _passwords = new Map() + private readonly _tokensInfoByJID = new Map() private readonly _secretKey: string protected readonly _logger: { debug: (s: string) => void @@ -122,8 +122,8 @@ export class LivechatProsodyAuth { const nickname: string | undefined = await getUserNickname(this._options, user) return { jid: normalizedUsername + '@' + this._prosodyDomain, - password: password, - nickname: nickname, + password, + nickname, type: 'peertube' } } @@ -136,7 +136,7 @@ export class LivechatProsodyAuth { if (this._userTokensEnabled) { try { const tokensInfo = await this._getTokensInfoForJID(normalizedUsername + '@' + this._prosodyDomain) - if (!tokensInfo || !tokensInfo.tokens.length) { + if (!tokensInfo?.tokens.length) { return false } // Checking that the user is valid: @@ -159,7 +159,7 @@ export class LivechatProsodyAuth { if (this._userTokensEnabled) { try { const tokensInfo = await this._getTokensInfoForJID(normalizedUsername + '@' + this._prosodyDomain) - if (!tokensInfo || !tokensInfo.tokens.length) { + if (!tokensInfo?.tokens.length) { return false } // Checking that the user is valid: @@ -247,7 +247,7 @@ export class LivechatProsodyAuth { } const nickname: string | undefined = await getUserNickname(this._options, user) const jid = normalizedUsername + '@' + this._prosodyDomain - const token = await this._createToken(user.id, jid, label) + const token = await this._createToken(user.id as number, jid, label) token.nickname = nickname return token @@ -279,7 +279,7 @@ export class LivechatProsodyAuth { return false } - await this._saveTokens(user.id, jid, tokensInfo.tokens.filter(t => t.id !== id)) + await this._saveTokens(user.id as number, jid, tokensInfo.tokens.filter(t => t.id !== id)) return true } @@ -293,8 +293,8 @@ export class LivechatProsodyAuth { const password = generatePassword(20) this._passwords.set(normalizedUsername, { - password: password, - validity: validity + password, + validity }) return password } @@ -330,7 +330,7 @@ export class LivechatProsodyAuth { const user = await this._options.peertubeHelpers.user.loadById(userId) if (!user || user.blocked) { return false } return true - } catch (err) { + } catch (_err) { return false } } @@ -381,7 +381,7 @@ export class LivechatProsodyAuth { this._tokensInfoByJID.set(jid, undefined) return undefined } - throw err + throw err as Error } } @@ -452,11 +452,15 @@ export class LivechatProsodyAuth { const encryptedArray = data.split(':') const iv = Buffer.from(encryptedArray[0], outputEncoding) - const encrypted = Buffer.from(encryptedArray[1], outputEncoding) + const encrypted = encryptedArray[1] const decipher = createDecipheriv(algorithm, this._secretKey, iv) - // FIXME: dismiss the "as any" below (dont understand why Typescript is not happy without) - return decipher.update(encrypted as any, outputEncoding, inputEncoding) + decipher.final(inputEncoding) + return decipher.update( + encrypted, + // here we must revert outputEncoding and inputEncoding, as were are decrypting. + outputEncoding, + inputEncoding + ) + decipher.final(inputEncoding) } public static singleton (): LivechatProsodyAuth { diff --git a/server/lib/prosody/certificates.ts b/server/lib/prosody/certificates.ts index 6fffd835..15420b90 100644 --- a/server/lib/prosody/certificates.ts +++ b/server/lib/prosody/certificates.ts @@ -39,7 +39,7 @@ function startProsodyCertificatesRenewCheck (options: RegisterServerOptions, con }, checkInterval) renew = { - timer: timer + timer } } diff --git a/server/lib/prosody/config.ts b/server/lib/prosody/config.ts index 25557f3b..19976946 100644 --- a/server/lib/prosody/config.ts +++ b/server/lib/prosody/config.ts @@ -19,6 +19,7 @@ import { BotConfiguration } from '../configuration/bot' import { debugMucAdmins } from '../debug' import { ExternalAuthOIDC } from '../external-auth/oidc' import { listModFirewallFiles } from '../firewall/config' +import { Emojis } from '../emojis' async function getWorkingDir (options: RegisterServerOptions): Promise { const peertubeHelpers = options.peertubeHelpers @@ -122,7 +123,7 @@ async function getProsodyFilePaths (options: RegisterServerOptions): Promise async function _getCommonAffiliations (options: RegisterServerOptions, _prosodyDomain: string): Promise { const r: Affiliations = {} diff --git a/server/lib/prosody/config/content.ts b/server/lib/prosody/config/content.ts index 58e99c19..2cbf3ca6 100644 --- a/server/lib/prosody/config/content.ts +++ b/server/lib/prosody/config/content.ts @@ -97,7 +97,7 @@ abstract class ProsodyConfigBlock { if (!this.entries.has(name)) { this.entries.set(name, []) } - let entry = this.entries.get(name) as ConfigEntryValue + let entry = this.entries.get(name) ?? [] if (!Array.isArray(entry)) { entry = [entry] } @@ -112,7 +112,7 @@ abstract class ProsodyConfigBlock { if (!this.entries.has(name)) { return } - let entry = this.entries.get(name) as ConfigEntryValue + let entry = this.entries.get(name) ?? [] if (!Array.isArray(entry)) { entry = [entry] } @@ -246,6 +246,7 @@ class ProsodyConfigContent { this.muc.add('modules_enabled', 'pubsub_peertubelivechat') this.muc.add('modules_enabled', 'muc_peertubelivechat_roles') + this.muc.add('modules_enabled', 'muc_peertubelivechat_announcements') this.muc.add('modules_enabled', 'muc_peertubelivechat_terms') this.muc.set('muc_terms_service_nickname', 'Peertube') @@ -562,6 +563,18 @@ class ProsodyConfigContent { this.global.set('firewall_scripts', files) } + /** + * Enable and configure the restrict message module. + * @param commonEmojiRegexp A regexp to match common emojis. + */ + useRestrictMessage (commonEmojiRegexp: string): void { + this.muc.add('modules_enabled', 'muc_peertubelivechat_restrict_message') + this.muc.set( + 'peertubelivechat_restrict_message_common_emoji_regexp', + new ConfigEntryValueMultiLineString(commonEmojiRegexp) + ) + } + addMucAdmins (jids: string[]): void { for (const jid of jids) { this.muc.add('admins', jid) @@ -587,6 +600,17 @@ class ProsodyConfigContent { let content = '' content += this.global.write() content += this.log + '\n' + + // Add some performance tweaks for Prosody 0.12.4+lua5.4. + // See https://github.com/JohnXLivingston/livechat-perf-test/tree/main/tests/33-prosody-gc + content += ` +gc = { + mode = "generational"; + minor_threshold = 5; + major_threshold = 50; +}; +` + content += '\n\n' if (this.authenticated) { content += this.authenticated.write() diff --git a/server/lib/prosody/ctl.ts b/server/lib/prosody/ctl.ts index 0e5e81d3..1c6b6daa 100644 --- a/server/lib/prosody/ctl.ts +++ b/server/lib/prosody/ctl.ts @@ -139,9 +139,9 @@ async function prosodyCtl ( reject(new Error('Missing prosodyctl command executable')) return } - let d: string = '' - let e: string = '' - let m: string = '' + let d = '' + let e = '' + let m = '' const cmdArgs = [ ...filePaths.execCtlArgs, '--config', @@ -196,7 +196,7 @@ async function prosodyCtl ( // (else it can cause trouble by cleaning AppImage extract too soon) spawned.on('close', (code) => { resolve({ - code: code, + code, stdout: d, sterr: e, message: m @@ -399,8 +399,8 @@ async function ensureProsodyRunning ( }) } logger.info('Waiting for the prosody process to launch') - let count: number = 0 - let processStarted: boolean = false + let count = 0 + let processStarted = false while (!processStarted && count < 5) { count++ await sleep(500) @@ -418,8 +418,8 @@ async function ensureProsodyRunning ( return } logger.info('Prosody is running') - await startProsodyLogRotate(options, filePaths) - await startProsodyCertificatesRenewCheck(options, config) + startProsodyLogRotate(options, filePaths) + startProsodyCertificatesRenewCheck(options, config) } async function ensureProsodyNotRunning (options: RegisterServerOptions): Promise { diff --git a/server/lib/prosody/logrotate.ts b/server/lib/prosody/logrotate.ts index bc029c39..61261a67 100644 --- a/server/lib/prosody/logrotate.ts +++ b/server/lib/prosody/logrotate.ts @@ -10,7 +10,7 @@ import { reloadProsody } from './ctl' type Rotate = (file: string, options: { count?: number compress?: boolean -}, cb: Function) => void +}, cb: (err: any) => void) => void const rotate: Rotate = require('log-rotate') interface ProsodyLogRotate { @@ -27,9 +27,10 @@ async function _rotate (options: RegisterServerOptions, path: string): Promise { if (err) { options.peertubeHelpers.logger.error('Failed to rotate file ' + path, err) - return resolve() + resolve() + return } - return resolve() + resolve() }) }) return p @@ -79,7 +80,7 @@ function startProsodyLogRotate (options: RegisterServerOptions, paths: ProsodyFi }, checkInterval) logRotate = { - timer: timer, + timer, lastRotation: Date.now() } } diff --git a/server/lib/prosody/migration/migrateV12.ts b/server/lib/prosody/migration/migrateV12.ts new file mode 100644 index 00000000..fe9a6775 --- /dev/null +++ b/server/lib/prosody/migration/migrateV12.ts @@ -0,0 +1,76 @@ +// SPDX-FileCopyrightText: 2024 John Livingston +// +// SPDX-License-Identifier: AGPL-3.0-only + +import type { RegisterServerOptions } from '@peertube/peertube-types' +import { listProsodyRooms, updateProsodyRoom } from '../api/manage-rooms' +import * as path from 'path' +import * as fs from 'fs' +import { Emojis } from '../../emojis' + +/** + * Livechat v12.0.0: we must send channel custom emojis regexp to Prosody. + * + * This script will only be launched one time. + */ +async function updateProsodyChannelEmojisRegex (options: RegisterServerOptions): Promise { + const logger = options.peertubeHelpers.logger + + // First, detect if we already run this script. + const doneFilePath = path.resolve(options.peertubeHelpers.plugin.getDataDirectoryPath(), 'fix-v11.1-emojis') + if (fs.existsSync(doneFilePath)) { + logger.debug('[migratev11_1_ChannelEmojis] Channel Emojis Regex already updated on Prosody.') + return + } + + logger.info('[migratev11_1_ChannelEmojis] Updating Channel custom emojis regexp on Prosody') + + const emojis = Emojis.singleton() + const rooms = await listProsodyRooms(options) + logger.debug('[migratev11_1_ChannelEmojis] Found ' + rooms.length.toString() + ' rooms.') + + for (const room of rooms) { + try { + let channelId: number + logger.info('[migratev11_1_ChannelEmojis] Must update custom emojis regexp for room ' + room.localpart) + const matches = room.localpart.match(/^channel\.(\d+)$/) + if (matches?.[1]) { + // room associated to a channel + channelId = parseInt(matches[1]) + } else { + // room associated to a video + const video = await options.peertubeHelpers.videos.loadByIdOrUUID(room.localpart) + if (!video || video.remote) { + logger.info('[migratev11_1_ChannelEmojis] Video ' + room.localpart + ' not found or remote, skipping') + continue + } + channelId = video.channelId + } + + if (!channelId) { + throw new Error('Cant find channelId') + } + + const regexp = await emojis.getChannelCustomEmojisRegexp(channelId) + if (regexp === undefined) { + logger.info('[migratev11_1_ChannelEmojis] Room ' + room.localpart + ' channel has no custom emojis, skipping.') + continue + } + + await updateProsodyRoom(options, room.jid, { + livechat_custom_emoji_regexp: regexp + }) + } catch (err) { + logger.error( + '[migratev11_1_ChannelEmojis] Failed to handle room ' + room.localpart + ', skipping. Error: ' + (err as string) + ) + continue + } + } + + await fs.promises.writeFile(doneFilePath, '') +} + +export { + updateProsodyChannelEmojisRegex +} diff --git a/server/lib/room-channel/room-channel-class.ts b/server/lib/room-channel/room-channel-class.ts index 424c03dd..437ef15d 100644 --- a/server/lib/room-channel/room-channel-class.ts +++ b/server/lib/room-channel/room-channel-class.ts @@ -36,11 +36,11 @@ class RoomChannel { protected room2Channel: Map = new Map() protected channel2Rooms: Map> = new Map>() - protected needSync: boolean = false + protected needSync = false protected roomConfToUpdate: Map = new Map() protected syncTimeout: ReturnType | undefined - protected isWriting: boolean = false + protected isWriting = false constructor (params: { options: RegisterServerOptions @@ -113,7 +113,7 @@ class RoomChannel { let content: string try { content = (await fs.promises.readFile(this.dataFilePath)).toString() - } catch (err) { + } catch (_err) { this.logger.info('Failed reading room-channel data file (' + this.dataFilePath + '), assuming it does not exists') return false } @@ -122,7 +122,7 @@ class RoomChannel { let data: any try { data = JSON.parse(content) - } catch (err) { + } catch (_err) { this.logger.error('Unable to parse the content of the room-channel data file, will start with an empty database.') return false } @@ -233,7 +233,7 @@ class RoomChannel { } await fillVideoCustomFields(this.options, video) - const hasChat = await videoHasWebchat({ + const hasChat = videoHasWebchat({ 'chat-per-live-video': !!settings['chat-per-live-video'], 'chat-all-lives': !!settings['chat-all-lives'], 'chat-all-non-lives': !!settings['chat-all-non-lives'], @@ -405,7 +405,7 @@ class RoomChannel { this.syncTimeout = undefined this.logger.info('Running scheduled sync') this.sync().then(() => {}, (err) => { - this.logger.error(err) + this.logger.error(err as string) // We will not re-schedule the sync, to avoid flooding error log if there is an issue with the server }) }, 100) diff --git a/server/lib/routers/api/configuration.ts b/server/lib/routers/api/configuration.ts index 43e88be5..92dfb342 100644 --- a/server/lib/routers/api/configuration.ts +++ b/server/lib/routers/api/configuration.ts @@ -16,6 +16,8 @@ import { import { sanitizeChannelConfigurationOptions } from '../../configuration/channel/sanitize' import { getConverseJSParams } from '../../../lib/conversejs/params' import { Emojis } from '../../../lib/emojis' +import { RoomChannel } from '../../../lib/room-channel' +import { updateProsodyRoom } from '../../../lib/prosody/api/manage-rooms' async function initConfigurationApiRouter (options: RegisterServerOptions, router: Router): Promise { const logger = options.peertubeHelpers.logger @@ -94,6 +96,20 @@ async function initConfigurationApiRouter (options: RegisterServerOptions, route req.body.bot = channelOptions.bot req.body.bot.enabled = false } + // TODO: Same for forbidSpecialChars/noDuplicate: if disabled, don't save reason and tolerance + // (disabling for now, because it is not acceptable to load twice the channel configuration. + // Must find better way) + // if (req.body.bot?.enabled === true && req.body.bot.forbidSpecialChars?.enabled === false) { + // logger.debug('Bot disabled, loading the previous bot conf to not override hidden fields') + // const channelOptions = + // await getChannelConfigurationOptions(options, channelInfos.id) ?? + // getDefaultChannelConfigurationOptions(options) + // req.body.bot.forbidSpecialChars.reason = channelOptions.bot.forbidSpecialChars.reason + // req.body.bot.forbidSpecialChars.tolerance = channelOptions.bot.forbidSpecialChars.tolerance + // req.body.bot.forbidSpecialChars.applyToModerators = channelOptions.bot.forbidSpecialChars.applyToModerators + // req.body.bot.forbidSpecialChars.enabled = false + // ... NoDuplicate... + // } channelOptions = await sanitizeChannelConfigurationOptions(options, channelInfos.id, req.body) } catch (err) { logger.warn(err) @@ -168,6 +184,20 @@ async function initConfigurationApiRouter (options: RegisterServerOptions, route await emojis.saveChannelDefinition(channelInfos.id, emojisDefinitionSanitized, bufferInfos) + // We must update the emoji only regexp on the Prosody server. + const customEmojisRegexp = await emojis.getChannelCustomEmojisRegexp(channelInfos.id) + const roomJIDs = RoomChannel.singleton().getChannelRoomJIDs(channelInfos.id) + for (const roomJID of roomJIDs) { + // No need to await here + logger.info(`Updating room ${roomJID} emoji only regexp...`) + updateProsodyRoom(options, roomJID, { + livechat_custom_emoji_regexp: customEmojisRegexp + }).then( + () => {}, + (err) => logger.error(err) + ) + } + // Reloading data, to send them back to front: const channelEmojis = (await emojis.channelCustomEmojisDefinition(channelInfos.id)) ?? @@ -184,6 +214,44 @@ async function initConfigurationApiRouter (options: RegisterServerOptions, route } } ])) + + router.post('/configuration/channel/emojis/:channelId/enable_emoji_only', asyncMiddleware([ + checkConfigurationEnabledMiddleware(options), + getCheckConfigurationChannelMiddleware(options), + async (req: Request, res: Response, _next: NextFunction): Promise => { + try { + if (!res.locals.channelInfos) { + throw new Error('Missing channelInfos in res.locals, should not happen') + } + + const emojis = Emojis.singleton() + const channelInfos = res.locals.channelInfos as ChannelInfos + + logger.info(`Enabling emoji only mode on each channel ${channelInfos.id} rooms ...`) + + // We can also update the EmojisRegexp, just in case. + const customEmojisRegexp = await emojis.getChannelCustomEmojisRegexp(channelInfos.id) + const roomJIDs = RoomChannel.singleton().getChannelRoomJIDs(channelInfos.id) + for (const roomJID of roomJIDs) { + // No need to await here + logger.info(`Enabling emoji only mode on room ${roomJID} ...`) + updateProsodyRoom(options, roomJID, { + livechat_emoji_only: true, + livechat_custom_emoji_regexp: customEmojisRegexp + }).then( + () => {}, + (err) => logger.error(err) + ) + } + + res.status(200) + res.json({ ok: true }) + } catch (err) { + logger.error(err) + res.sendStatus(500) + } + } + ])) } export { diff --git a/server/lib/routers/api/room.ts b/server/lib/routers/api/room.ts index a3efbad6..29b833be 100644 --- a/server/lib/routers/api/room.ts +++ b/server/lib/routers/api/room.ts @@ -15,6 +15,7 @@ import { getChannelConfigurationOptions, getDefaultChannelConfigurationOptions } from '../../configuration/channel/storage' +import { Emojis } from '../../emojis' // See here for description: https://modules.prosody.im/mod_muc_http_defaults.html interface RoomDefaults { @@ -37,6 +38,8 @@ interface RoomDefaults { // Following fields are specific to livechat (for now), and requires a customized version for mod_muc_http_defaults. slow_mode_duration?: number mute_anonymous?: boolean + livechat_emoji_only?: boolean + livechat_custom_emoji_regexp?: string livechat_muc_terms?: string moderation_delay?: number anonymize_moderation_actions?: boolean @@ -51,9 +54,12 @@ async function _getChannelSpecificOptions ( const channelOptions = await getChannelConfigurationOptions(options, channelId) ?? getDefaultChannelConfigurationOptions(options) + const customEmojisRegexp = await Emojis.singletonSafe()?.getChannelCustomEmojisRegexp(channelId) + return { slow_mode_duration: channelOptions.slowMode.duration, mute_anonymous: channelOptions.mute.anonymous, + livechat_custom_emoji_regexp: customEmojisRegexp, livechat_muc_terms: channelOptions.terms, moderation_delay: channelOptions.moderation.delay, anonymize_moderation_actions: channelOptions.moderation.anonymize @@ -80,7 +86,7 @@ async function initRoomApiRouter (options: RegisterServerOptions, router: Router // Now, we have two different room type: per video or per channel. if (settings['prosody-room-type'] === 'channel') { const matches = jid.match(/^channel\.(\d+)$/) - if (!matches || !matches[1]) { + if (!matches?.[1]) { logger.warn(`Invalid channel room jid '${jid}'.`) res.sendStatus(403) return @@ -111,7 +117,7 @@ async function initRoomApiRouter (options: RegisterServerOptions, router: Router }, await _getChannelSpecificOptions(options, channelId) ), - affiliations: affiliations + affiliations } RoomChannel.singleton().link(channelId, jid) @@ -166,7 +172,7 @@ async function initRoomApiRouter (options: RegisterServerOptions, router: Router }, await _getChannelSpecificOptions(options, video.channelId) ), - affiliations: affiliations + affiliations } RoomChannel.singleton().link(video.channelId, jid) diff --git a/server/lib/routers/index.ts b/server/lib/routers/index.ts index 3dc25a9b..7fb83775 100644 --- a/server/lib/routers/index.ts +++ b/server/lib/routers/index.ts @@ -13,7 +13,12 @@ async function initRouters (options: RegisterServerOptions): Promise { const { getRouter } = options const router = getRouter() - router.get('/ping', (req: Request, res: Response, _next: NextFunction) => res.json({ message: 'pong' })) + router.get( + '/ping', + (req: Request, res: Response, _next: NextFunction) => { + res.json({ message: 'pong' }) + } + ) router.use('/webchat', await initWebchatRouter(options)) router.use('/settings', await initSettingsRouter(options)) diff --git a/server/lib/routers/oidc.ts b/server/lib/routers/oidc.ts index ffe0d15e..86944192 100644 --- a/server/lib/routers/oidc.ts +++ b/server/lib/routers/oidc.ts @@ -54,7 +54,7 @@ async function initOIDCRouter (options: RegisterServerOptions): Promise const redirectUrl = await oidc.initAuthenticationProcess(req, res) res.redirect(redirectUrl) } catch (err) { - logger.error('[oidc router] Failed to process the OIDC callback: ' + (err as string)) + logger.error('[oidc router] Failed to process the OIDC connect call: ' + (err as string)) next() } } diff --git a/server/lib/routers/webchat.ts b/server/lib/routers/webchat.ts index 9f2cbe31..f822449b 100644 --- a/server/lib/routers/webchat.ts +++ b/server/lib/routers/webchat.ts @@ -142,12 +142,13 @@ async function initWebchatRouter (options: RegisterServerOptionsV5): Promise ${message} @@ -272,7 +273,7 @@ async function initWebchatRouter (options: RegisterServerOptionsV5): Promise { + currentHttpBindProxy.on('error', (err, req, res: any) => { // FIXME: remove the `any`. // We must handle errors, otherwise Peertube server crashes! logger.error( 'The http bind proxy got an error ' + @@ -346,7 +347,7 @@ async function enableProxyRoute ( ignorePath: true, ws: true }) - currentWebsocketProxy.on('error', (err, req, res) => { + currentWebsocketProxy.on('error', (err, req, res: any) => { // FIXME: remove the `any`. // We must handle errors, otherwise Peertube server crashes! logger.error( 'The websocket proxy got an error ' + @@ -368,7 +369,7 @@ async function enableProxyRoute ( ignorePath: true, ws: true }) - currentS2SWebsocketProxy.on('error', (err, req, res) => { + currentS2SWebsocketProxy.on('error', (err, req, res: any) => { // FIXME: remove the `any`. // We must handle errors, otherwise Peertube server crashes! logger.error( 'The s2s websocket proxy got an error ' + diff --git a/server/lib/rss/init.ts b/server/lib/rss/init.ts index a7d3b22c..9626049f 100644 --- a/server/lib/rss/init.ts +++ b/server/lib/rss/init.ts @@ -46,7 +46,7 @@ async function initRSS (options: RegisterServerOptions): Promise { } await fillVideoCustomFields(options, video) - const hasChat = await videoHasWebchat({ + const hasChat = videoHasWebchat({ 'chat-per-live-video': !!settings['chat-per-live-video'], 'chat-all-lives': !!settings['chat-all-lives'], 'chat-all-non-lives': !!settings['chat-all-non-lives'], diff --git a/server/lib/settings.ts b/server/lib/settings.ts index 2360d770..9bc63964 100644 --- a/server/lib/settings.ts +++ b/server/lib/settings.ts @@ -125,7 +125,7 @@ function initImportantNotesSettings ({ registerSetting }: RegisterServerOptions) // Note: the following text as a variable in it. // Not translating it: it should be very rare. descriptionHTML: ` -It seems that your are using a ${process.arch} CPU, +It seems that your are using a ${process.arch} CPU, which is not compatible with the plugin. Please read , + ] as Array<{ value: ConverseJSTheme, label: string }>, descriptionHTML: loc('converse_theme_description') }) diff --git a/server/main.ts b/server/main.ts index 61ae90ac..61d67fd7 100644 --- a/server/main.ts +++ b/server/main.ts @@ -18,6 +18,7 @@ import { BotConfiguration } from './lib/configuration/bot' import { BotsCtl } from './lib/bots/ctl' import { ExternalAuthOIDC } from './lib/external-auth/oidc' import { migrateMUCAffiliations } from './lib/prosody/migration/migrateV10' +import { updateProsodyChannelEmojisRegex } from './lib/prosody/migration/migrateV12' import { Emojis } from './lib/emojis' import { LivechatProsodyAuth } from './lib/prosody/auth' import decache from 'decache' @@ -87,11 +88,24 @@ async function register (options: RegisterServerOptions): Promise { // livechat v10.0.0: we must migrate MUC affiliations (but we don't have to wait) // we do this after the preBotPromise, just to avoid doing both at the same time. preBotPromise.then(() => { - migrateMUCAffiliations(options).then( + const p = migrateMUCAffiliations(options).then( () => {}, (err) => { logger.error(err) - }) + } + ) + + // livechat v11.1: we must send channel emojis regexp to Prosody rooms + p.finally( + () => { + updateProsodyChannelEmojisRegex(options).then( + () => {}, + (err: any) => { + logger.error(err) + } + ) + } + ).catch(() => {}) }, () => {}) } catch (error) { options.peertubeHelpers.logger.error('Error when launching Prosody: ' + (error as string)) diff --git a/server/tsconfig.json b/server/tsconfig.json index b679eb99..483b0165 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -1,16 +1,9 @@ { - "extends": "@tsconfig/node12/tsconfig.json", + "extends": "@tsconfig/node16/tsconfig.json", "compilerOptions": { - "moduleResolution": "node", // Tell tsc to look in node_modules for modules - "strict": true, // That implies alwaysStrict, noImplicitAny, noImplicitThis - - "alwaysStrict": true, // should already be true because of strict:true - "noImplicitAny": true, // should already be true because of strict:true - "noImplicitThis": true, // should already be true because of strict:true "noImplicitReturns": true, "noImplicitOverride": true, - "strictBindCallApply": true, // should already be true because of strict:true - "noUnusedLocals": false, // works better as a linter error/warning + "noUnusedLocals": true, "removeComments": true, "sourceMap": true, diff --git a/shared/.eslintrc.json b/shared/.eslintrc.json deleted file mode 100644 index d6e49863..00000000 --- a/shared/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "standard-with-typescript" - ], - "globals": {}, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2018, - "project": [ - "./server/tsconfig.json", - "./client/tsconfig.json" - ] - }, - "plugins": [ - "@typescript-eslint" - ], - "ignorePatterns": [], - "rules": { - "@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_"}], - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/strict-boolean-expressions": "off", - "@typescript-eslint/return-await": [2, "in-try-catch"], // FIXME: correct? - "@typescript-eslint/no-invalid-void-type": "off", - "@typescript-eslint/triple-slash-reference": "off", - "max-len": [ - "error", - { - "code": 120, - "comments": 120 - } - ], - "no-unused-vars": "off" - } -} diff --git a/shared/.eslintrc.json.license b/shared/.eslintrc.json.license deleted file mode 100644 index b253ad42..00000000 --- a/shared/.eslintrc.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2024 John Livingston - -SPDX-License-Identifier: AGPL-3.0-only diff --git a/shared/lib/constants.ts b/shared/lib/constants.ts index af4fabc9..3c6d90a8 100644 --- a/shared/lib/constants.ts +++ b/shared/lib/constants.ts @@ -3,3 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0-only export const channelTermsMaxLength = 400 + +export const forbidSpecialCharsDefaultTolerance = 0 +export const forbidSpecialCharsMaxTolerance = 10 + +export const noDuplicateMaxDelay = 86400 +export const noDuplicateDefaultDelay = 60 diff --git a/shared/lib/types.ts b/shared/lib/types.ts index 9d3915da..34c97027 100644 --- a/shared/lib/types.ts +++ b/shared/lib/types.ts @@ -96,6 +96,8 @@ interface ChannelConfigurationOptions { forbiddenWords: ChannelForbiddenWords[] quotes: ChannelQuotes[] commands: ChannelCommands[] + forbidSpecialChars: ChannelForbidSpecialChars + noDuplicate: ChannelNoDuplicate // TODO: bannedJIDs: string[] } slowMode: { @@ -132,6 +134,20 @@ interface ChannelCommands { message: string } +interface ChannelForbidSpecialChars { + enabled: boolean + tolerance: number + reason: string + applyToModerators: boolean +} + +interface ChannelNoDuplicate { + enabled: boolean + reason: string + delay: number + applyToModerators: boolean +} + interface ChannelConfiguration { channel: ChannelInfos configuration: ChannelConfigurationOptions diff --git a/shared/lib/video.ts b/shared/lib/video.ts index 7583e72b..253b3a5c 100644 --- a/shared/lib/video.ts +++ b/shared/lib/video.ts @@ -44,7 +44,7 @@ function videoHasWebchat (settings: VideoHasWebchatSettings, video: SharedVideo) if (video.remote) return false } - if (settings['chat-per-live-video'] && video.isLive && video.pluginData && video.pluginData['livechat-active']) { + if (settings['chat-per-live-video'] && video.isLive && video.pluginData?.['livechat-active']) { return true } diff --git a/support/documentation/config.toml b/support/documentation/config.toml index 089114b8..86f63ba8 100644 --- a/support/documentation/config.toml +++ b/support/documentation/config.toml @@ -31,6 +31,10 @@ name = " Framagit repository" url = "https://framagit.org/Livingston/peertube-plugin-livechat" weight = 20 +[markup] + [markup.goldmark.renderer] + unsafe=true + [Languages] [Languages.en] weight = 1 diff --git a/support/documentation/content/en/contributing/document/_index.md b/support/documentation/content/en/contributing/document/_index.md index 1bc429f8..9c75e386 100644 --- a/support/documentation/content/en/contributing/document/_index.md +++ b/support/documentation/content/en/contributing/document/_index.md @@ -93,11 +93,17 @@ To facilitate translators work, avoid making too long paragraphs. For now, it is not possible to use Markdown tables: the translation tools will break them. {{% notice warning %}} -There may be links to documentation elsewhere on the web. +There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url. {{% /notice %}} +When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. +This short code takes the version number as parameter. +Here is an example: + +{{% livechat_version_notice 12.0.0 %}} + ### What if I can't use hugo and/or po4a? Just edit english markdown files, and specify that you can't build translations when you make your Pull Request. diff --git a/support/documentation/content/en/documentation/admin/mod_firewall.md b/support/documentation/content/en/documentation/admin/mod_firewall.md index 404e3c00..0b87f414 100644 --- a/support/documentation/content/en/documentation/admin/mod_firewall.md +++ b/support/documentation/content/en/documentation/admin/mod_firewall.md @@ -5,9 +5,7 @@ weight: 30 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 11.0.0. -{{% /notice %}} +{{% livechat_version_notice 11.0.0 %}} You can enable [mod_firewall](https://modules.prosody.im/mod_firewall) on your Prosody server. diff --git a/support/documentation/content/en/documentation/user/obs.md b/support/documentation/content/en/documentation/user/obs.md index ec0560ab..999d606c 100644 --- a/support/documentation/content/en/documentation/user/obs.md +++ b/support/documentation/content/en/documentation/user/obs.md @@ -42,9 +42,7 @@ You must use valid CSS color values, and they must be properly URL encoded. ## OBS Dock -{{% notice info %}} -This feature comes with the livechat plugin version 10.1.0. -{{% /notice %}} +{{% livechat_version_notice 10.1.0 %}} {{% notice warning %}} This feature can be disabled by the instance's adminitrators. diff --git a/support/documentation/content/en/documentation/user/streamers/announcements.md b/support/documentation/content/en/documentation/user/streamers/announcements.md new file mode 100644 index 00000000..d627e5de --- /dev/null +++ b/support/documentation/content/en/documentation/user/streamers/announcements.md @@ -0,0 +1,31 @@ +--- +title: "Announcements" +description: "Room owners and administrators can send special announcements in the chat." +weight: 250 +chapter: false +--- + +{{% livechat_version_notice 12.0.0 %}} + +Room owners and administrators can send special announcements in the chat. + +These messages will be more visible than standard messages. + +To send announcements, owners and administrators will have a "{{% livechat_label announcements_message_type %}}" selector on the top of the message field: + +![Screenshot of a chat session. On top of the message field, there is a "{{% livechat_label announcements_message_type %}}" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px "Announcements") + +There are several message types: + +* **{{% livechat_label announcements_message_type_standard %}}**: to send a standard message. +* **{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box. +* **{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold "{{% livechat_label announcements_message_type_announcement %}}" title will be added. +* **{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold "{{% livechat_label announcements_message_type_announcement %}}" title will be added. + +{{% notice info %}} +User that are not owner or administrator of the chatroom can't send such messages. +{{% /notice %}} + +{{% notice warning %}} +Note: Standards XMPP clients will display announcements as standard messages. +{{% /notice %}} diff --git a/support/documentation/content/en/documentation/user/streamers/bot/forbidden_words.md b/support/documentation/content/en/documentation/user/streamers/bot/forbidden_words.md index b8fd0ff1..1268b63c 100644 --- a/support/documentation/content/en/documentation/user/streamers/bot/forbidden_words.md +++ b/support/documentation/content/en/documentation/user/streamers/bot/forbidden_words.md @@ -1,7 +1,7 @@ --- title: "Forbidden words" description: "The bot can automatically moderate messages containing forbidden words." -weight: 10 +weight: 20 chapter: false --- @@ -49,13 +49,13 @@ You can [open an issue](https://github.com/JohnXLivingston/peertube-plugin-livec By checking this option, each line of the "{{% livechat_label livechat_configuration_channel_forbidden_words_label %}}" field will be considered as a [regular expression](https://en.wikipedia.org/wiki/Regular_expression). -## {{% livechat_label livechat_configuration_channel_forbidden_words_applytomoderators_label %}} +## {{% livechat_label livechat_configuration_applytomoderators_label %}} -{{% livechat_label livechat_configuration_channel_forbidden_words_applytomoderators_desc %}} +{{% livechat_label livechat_configuration_applytomoderators_desc %}} -## {{% livechat_label livechat_configuration_channel_forbidden_words_reason_label %}} +## {{% livechat_label livechat_configuration_channel_retractation_reason_label %}} -{{% livechat_label livechat_configuration_channel_forbidden_words_reason_desc %}} +{{% livechat_label livechat_configuration_channel_retractation_reason_desc %}} ## {{% livechat_label livechat_configuration_channel_forbidden_words_comments_label %}} diff --git a/support/documentation/content/en/documentation/user/streamers/bot/no_duplicate.md b/support/documentation/content/en/documentation/user/streamers/bot/no_duplicate.md new file mode 100644 index 00000000..d075cb6b --- /dev/null +++ b/support/documentation/content/en/documentation/user/streamers/bot/no_duplicate.md @@ -0,0 +1,28 @@ +--- +title: "No duplicate message" +description: "The bot can automatically moderate duplicate messages." +weight: 12 +chapter: false +--- + +## {{% livechat_label livechat_configuration_channel_no_duplicate_label %}} + +{{% livechat_version_notice 12.0.0 %}} + +### Configuration + +{{% livechat_label livechat_configuration_channel_no_duplicate_desc %}} + +![Screenshot of the channel options page, with several fields to configure the "No duplicate message" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px "No duplicate message configuration") + +#### {{% livechat_label livechat_configuration_channel_no_duplicate_delay_label %}} + +{{% livechat_label livechat_configuration_channel_no_duplicate_delay_desc %}} + +#### {{% livechat_label livechat_configuration_channel_retractation_reason_label %}} + +{{% livechat_label livechat_configuration_channel_retractation_reason_desc %}} + +#### {{% livechat_label livechat_configuration_applytomoderators_label %}} + +{{% livechat_label livechat_configuration_applytomoderators_desc %}} diff --git a/support/documentation/content/en/documentation/user/streamers/bot/quotes.md b/support/documentation/content/en/documentation/user/streamers/bot/quotes.md index 6c384b62..e2fd6143 100644 --- a/support/documentation/content/en/documentation/user/streamers/bot/quotes.md +++ b/support/documentation/content/en/documentation/user/streamers/bot/quotes.md @@ -1,7 +1,7 @@ --- title: "Timers" description: "The bot can send periodically some messages." -weight: 20 +weight: 30 chapter: false --- diff --git a/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md new file mode 100644 index 00000000..70754be1 --- /dev/null +++ b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md @@ -0,0 +1,28 @@ +--- +title: "Special characters" +description: "The bot can automatically moderate messages containing too many special characters." +weight: 10 +chapter: false +--- + +## {{% livechat_label livechat_configuration_channel_special_chars_label %}} + +{{% livechat_version_notice 12.0.0 %}} + +### Configuration + +{{% livechat_label livechat_configuration_channel_special_chars_desc %}} + +![Screenshot of the channel options page, with several fields to configure the "Forbid special characters" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px "Forbid special characters configuration") + +#### {{% livechat_label livechat_configuration_channel_special_chars_tolerance_label %}} + +{{% livechat_label livechat_configuration_channel_special_chars_tolerance_desc %}} + +#### {{% livechat_label livechat_configuration_channel_retractation_reason_label %}} + +{{% livechat_label livechat_configuration_channel_retractation_reason_desc %}} + +#### {{% livechat_label livechat_configuration_applytomoderators_label %}} + +{{% livechat_label livechat_configuration_applytomoderators_desc %}} diff --git a/support/documentation/content/en/documentation/user/streamers/emojis.md b/support/documentation/content/en/documentation/user/streamers/emojis.md index f0119060..8854e9cf 100644 --- a/support/documentation/content/en/documentation/user/streamers/emojis.md +++ b/support/documentation/content/en/documentation/user/streamers/emojis.md @@ -5,9 +5,7 @@ weight: 330 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 10.1.0. -{{% /notice %}} +{{% livechat_version_notice 10.1.0 %}} ## Channel emojis diff --git a/support/documentation/content/en/documentation/user/streamers/emojis_only.md b/support/documentation/content/en/documentation/user/streamers/emojis_only.md new file mode 100644 index 00000000..459c2639 --- /dev/null +++ b/support/documentation/content/en/documentation/user/streamers/emojis_only.md @@ -0,0 +1,22 @@ +--- +title: "Emojis only mode" +description: "Plugin peertube-plugin-livechat emojis only mode" +weight: 335 +chapter: false +--- + +{{% livechat_version_notice 12.0.0 %}} + +## {{% livechat_label emoji_only_mode_title %}} + +{{% livechat_label emoji_only_mode_desc_1 %}} + +This mode can be usefull for example: + +* To avoid spam or offensive message when you are not here to moderate. +* When there are too many speaking participants, and you can't no more moderate correctly. + +To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the "configure" menu. +In the form, you will find a "{{% livechat_label emoji_only_mode_title %}}" checkbox. + +If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the "{{% livechat_label emoji_only_enable_all_rooms %}}" button. diff --git a/support/documentation/content/en/documentation/user/streamers/moderation.md b/support/documentation/content/en/documentation/user/streamers/moderation.md index 7881553a..39cf4150 100644 --- a/support/documentation/content/en/documentation/user/streamers/moderation.md +++ b/support/documentation/content/en/documentation/user/streamers/moderation.md @@ -41,9 +41,7 @@ When you open the chat room in full screen, there will also be a menu with dedic ## {{% livechat_label livechat_configuration_channel_mute_anonymous_label %}} -{{% notice info %}} -This feature comes with the livechat plugin version 10.2.0. -{{% /notice %}} +{{% livechat_version_notice 10.2.0 %}} You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat. @@ -75,9 +73,7 @@ You can promote users as moderators, if you need some help. ## {{% livechat_label livechat_configuration_channel_anonymize_moderation_label %}} -{{% notice info %}} -This feature comes with the livechat plugin version 11.0.0. -{{% /notice %}} +{{% livechat_version_notice 11.0.0 %}} It is possible to anonymize moderation actions, to avoid disclosing who is banning/kicking/… occupants. @@ -88,9 +84,7 @@ You can choose to enable or disable this feature for new chatrooms on the [chann ## Participant message history search -{{% notice info %}} -This feature comes with the livechat plugin version 11.0.0. -{{% /notice %}} +{{% livechat_version_notice 11.0.0 %}} As a room admin or owner, you can search all messages sent by a given participant. diff --git a/support/documentation/content/en/documentation/user/streamers/moderation_delay.md b/support/documentation/content/en/documentation/user/streamers/moderation_delay.md index 3c6718c9..008cad9e 100644 --- a/support/documentation/content/en/documentation/user/streamers/moderation_delay.md +++ b/support/documentation/content/en/documentation/user/streamers/moderation_delay.md @@ -5,9 +5,7 @@ weight: 325 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 10.3.0. -{{% /notice %}} +{{% livechat_version_notice 10.3.0 %}} ## Introduction diff --git a/support/documentation/content/en/documentation/user/streamers/moderation_notes.md b/support/documentation/content/en/documentation/user/streamers/moderation_notes.md index 87cf394e..32d7b279 100644 --- a/support/documentation/content/en/documentation/user/streamers/moderation_notes.md +++ b/support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -5,9 +5,7 @@ weight: 355 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 11.0.0. -{{% /notice %}} +{{% livechat_version_notice 11.0.0 %}} ## Introduction diff --git a/support/documentation/content/en/documentation/user/streamers/polls.md b/support/documentation/content/en/documentation/user/streamers/polls.md index 1f6f172f..1ae677f3 100644 --- a/support/documentation/content/en/documentation/user/streamers/polls.md +++ b/support/documentation/content/en/documentation/user/streamers/polls.md @@ -1,13 +1,11 @@ --- title: "Polls" -description: "You can create polls to ask viewers their opinion." -weight: 330 +description: "You can create polls to ask viewers their opinion" +weight: 340 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 10.2.0. -{{% /notice %}} +{{% livechat_version_notice 10.2.0 %}} ## Create a poll diff --git a/support/documentation/content/en/documentation/user/streamers/slow_mode.md b/support/documentation/content/en/documentation/user/streamers/slow_mode.md index 577cdc7d..1d07455a 100644 --- a/support/documentation/content/en/documentation/user/streamers/slow_mode.md +++ b/support/documentation/content/en/documentation/user/streamers/slow_mode.md @@ -5,9 +5,7 @@ weight: 320 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 8.3.0. -{{% /notice %}} +{{% livechat_version_notice 8.3.0 %}} ## Introduction diff --git a/support/documentation/content/en/documentation/user/streamers/tasks.md b/support/documentation/content/en/documentation/user/streamers/tasks.md index 05f538fc..9ce17203 100644 --- a/support/documentation/content/en/documentation/user/streamers/tasks.md +++ b/support/documentation/content/en/documentation/user/streamers/tasks.md @@ -5,9 +5,7 @@ weight: 350 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 10.0.0. -{{% /notice %}} +{{% livechat_version_notice 10.0.0 %}} ## Introduction diff --git a/support/documentation/content/en/documentation/user/streamers/terms.md b/support/documentation/content/en/documentation/user/streamers/terms.md index 04ed3835..993c7c7d 100644 --- a/support/documentation/content/en/documentation/user/streamers/terms.md +++ b/support/documentation/content/en/documentation/user/streamers/terms.md @@ -5,9 +5,7 @@ weight: 310 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 10.2.0. -{{% /notice %}} +{{% livechat_version_notice 10.2.0 %}} ## Configuration diff --git a/support/documentation/content/en/documentation/user/viewers.md b/support/documentation/content/en/documentation/user/viewers.md index d7130b4a..a7d51027 100644 --- a/support/documentation/content/en/documentation/user/viewers.md +++ b/support/documentation/content/en/documentation/user/viewers.md @@ -59,9 +59,7 @@ To do so, just open the video on your instance (you can for example copy/paste t ## If you have a Peertube account on another Peertube instance -{{% notice info %}} -This feature comes with the livechat plugin version 9.0.0. -{{% /notice %}} +{{% livechat_version_notice 9.0.0 %}} If you have a Peertube account, but not on the current instance, there is a "{{% livechat_label login_using_external_account %}}" button. This button will open a dialog where you can enter your Peertube instance URL. diff --git a/support/documentation/content/en/images/announcements.png b/support/documentation/content/en/images/announcements.png new file mode 100644 index 00000000..e3cb1656 Binary files /dev/null and b/support/documentation/content/en/images/announcements.png differ diff --git a/support/documentation/content/en/images/bot_no_duplicate.png b/support/documentation/content/en/images/bot_no_duplicate.png new file mode 100644 index 00000000..bbc05248 Binary files /dev/null and b/support/documentation/content/en/images/bot_no_duplicate.png differ diff --git a/support/documentation/content/en/images/forbid_special_chars_configuration.png b/support/documentation/content/en/images/forbid_special_chars_configuration.png new file mode 100644 index 00000000..56f1fd8c Binary files /dev/null and b/support/documentation/content/en/images/forbid_special_chars_configuration.png differ diff --git a/support/documentation/layouts/shortcodes/livechat_version_notice.html b/support/documentation/layouts/shortcodes/livechat_version_notice.html new file mode 100644 index 00000000..5aed134d --- /dev/null +++ b/support/documentation/layouts/shortcodes/livechat_version_notice.html @@ -0,0 +1,9 @@ +{{- $_hugo_config := `{ "version": 1 }` }} +{{- partial "shortcodes/notice.html" (dict + "page" .Page + "color" (.Get "color") + "content" (replace (i18n "feature_comes_with") "X.X.X" ($.Get 0)) + "icon" (.Get "icon" | default (.Get 2)) + "style" ("info") + "title" (.Get "title" | default (.Get 1)) +) }} diff --git a/.eslintrc.json.license b/support/documentation/layouts/shortcodes/livechat_version_notice.html.license similarity index 100% rename from .eslintrc.json.license rename to support/documentation/layouts/shortcodes/livechat_version_notice.html.license diff --git a/support/documentation/po/livechat.ar.po b/support/documentation/po/livechat.ar.po index 48615f36..85f25395 100644 --- a/support/documentation/po/livechat.ar.po +++ b/support/documentation/po/livechat.ar.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" -"PO-Revision-Date: 2024-08-30 20:08+0000\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" +"PO-Revision-Date: 2024-09-12 15:37+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : (n%100>=3 " "&& n%100<=10) ? 3 : n%100>=11 ? 4 : 5);\n" -"X-Generator: Weblate 5.7\n" +"X-Generator: Weblate 5.7.2\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -231,7 +231,7 @@ msgstr "" #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Debug Mode" -msgstr "" +msgstr "وضع التفحص" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -585,7 +585,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1215,7 +1220,7 @@ msgstr "" #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md #, no-wrap msgid "Firewall" -msgstr "" +msgstr "الجدار الناري" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1876,13 +1881,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2041,7 +2039,7 @@ msgstr "" #: build/documentation/pot_in/documentation/admin/settings.md #, no-wrap msgid "Chat behaviour" -msgstr "" +msgstr "السلوك في الدردشة" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md @@ -2313,7 +2311,7 @@ msgstr "" #: support/documentation/content/en/documentation/installation/cpu_compatibility.md #, no-wrap msgid "Docker" -msgstr "" +msgstr "دوكر" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -2616,12 +2614,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2700,6 +2692,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "الإعلانات" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3055,6 +3109,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "الضبط" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3077,6 +3156,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, fuzzy, no-wrap @@ -3211,6 +3307,44 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy, no-wrap +#| msgid "Documentation" +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "المستندات" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3235,11 +3369,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3380,13 +3509,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3777,7 +3899,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3956,11 +4078,6 @@ msgstr "" msgid "Slow mode" msgstr "الوضع البطيء" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4051,11 +4168,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4267,12 +4379,6 @@ msgstr "معلومات عامة" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "الضبط" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4427,11 +4533,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.ca.po b/support/documentation/po/livechat.ca.po index 869b9ee8..161a6e23 100644 --- a/support/documentation/po/livechat.ca.po +++ b/support/documentation/po/livechat.ca.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Catalan \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 50a6cd72..cfce0d3b 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -6,132 +6,155 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" -"PO-Revision-Date: 2023-07-17 10:52+0000\n" -"Last-Translator: Anonymous \n" -"Language-Team: Czech \n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" +"PO-Revision-Date: 2024-11-26 23:02+0000\n" +"Last-Translator: Jiří Podhorecký \n" +"Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.18.2\n" +"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" +"X-Generator: Weblate 5.8.4\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md #, no-wrap msgid "Contact the author" -msgstr "" +msgstr "Kontakt na autora" #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/contact/_index.md #, no-wrap msgid "Contact me" -msgstr "" +msgstr "Kontaktujte mě" #. type: Plain text #: support/documentation/content/en/contact/_index.md msgid "If you have any question, or if you want to talk about this plugin, you can join this XMPP room with any Jabber client: [plugin-livechat-support@room.im.yiny.org](xmpp:plugin-livechat-support@room.im.yiny.org?join)." msgstr "" +"Máte-li jakékoli dotazy nebo chcete-li si o tomto zásuvném modulu promluvit, " +"můžete se připojit k této místnosti XMPP pomocí libovolného klienta Jabber: " +"[plugin-livechat-support@room.im.yiny.org](xmpp:plugin-livechat-support@room." +"im.yiny.org?join)." #. type: Plain text #: support/documentation/content/en/contact/_index.md msgid "If you want to support the project financially, you can contact me by mail at git.[at].john-livingston.fr, or check my [Liberapay profile](https://liberapay.com/JohnLivingston/)." msgstr "" +"Pokud chcete projekt finančně podpořit, můžete mě kontaktovat na e-mailové " +"adrese git.[at].john-livingston.fr nebo se podívejte na můj [Liberapay " +"profil](https://liberapay.com/JohnLivingston/)." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contributing/codeofconduct/_index.md #, no-wrap msgid "Contributor Covenant Code of Conduct" -msgstr "" +msgstr "Kodex chování smluvních partnerů" #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/contributing/codeofconduct/_index.md #, no-wrap msgid "Code of Conduct" -msgstr "" +msgstr "Kodex chování" #. type: Plain text #: support/documentation/content/en/contributing/codeofconduct/_index.md msgid "This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html). Translations are available at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement by mail at git.[at].john-livingston.fr." msgstr "" +"Tento kodex chování je převzat z dokumentu [Contributor Covenant](https://www" +".contributor-covenant.org), verze 2.1, který je k dispozici na adrese " +"[https://www.contributor-covenant.org/version/2/1/code_of_conduct." +"html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html)" +". Překlady jsou k dispozici na adrese [https://www.contributor-covenant.org/" +"translations](https://www.contributor-covenant.org/translations). Případy " +"urážlivého, obtěžujícího nebo jinak nepřijatelného chování lze hlásit " +"vedoucím komunity odpovědným za jejich prosazování na e-mailovou adresu " +"git.[at].john-livingston.fr." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Develop" -msgstr "" +msgstr "Vývoj" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Always talk about features you want to develop by creating/finding and commenting the issue tackling your problem before you start working on it, and inform the community that you begin coding by claiming the issue." msgstr "" +"Vždy mluvte o funkcích, které chcete vyvinout, tím, že vytvoříte/najdete a " +"okomentujete problém, který řeší váš problém, než na něm začnete pracovat, a " +"informujte komunitu o tom, že začínáte kódovat tím, že problém prohlásíte za " +"problém." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Pull Request must be done on the `main` branch." -msgstr "" +msgstr "Žádost o stažení musí být provedena na větvi `main`." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Until march 2023, contribution were made on the `develop` branch. This procedure is now deprecated." msgstr "" +"Do března 2023 byly příspěvky prováděny na větvi `develop`. Tento postup je " +"nyní zastaralý." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Prerequisite for building this plugin" -msgstr "" +msgstr "Předpoklad pro vytvoření tohoto zásuvného modulu" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "It is highly recommended to be familiar with following concepts:" -msgstr "" +msgstr "Doporučujeme seznámit se s následujícími pojmy:" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "Git" -msgstr "" +msgstr "Git" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "NodeJS" -msgstr "" +msgstr "NodeJS" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "NPM" -msgstr "" +msgstr "NPM" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "Typescript" -msgstr "" +msgstr "Typescript" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "To build the plugin, you must have following packages:" -msgstr "" +msgstr "Pro sestavení pluginu musíte mít následující balíčky:" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "`git`" -msgstr "" +msgstr "`git`" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "`npm` (>=8.x)" -msgstr "" +msgstr "`npm` (>=8.x)" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "`nodejs` (>=14.x)" -msgstr "" +msgstr "`nodejs` (>=14.x)" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "`build-essential`" -msgstr "" +msgstr "`build-essential`" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md @@ -146,17 +169,22 @@ msgstr "" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "`reuse`" -msgstr "" +msgstr "`reuse`" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Please note that this plugin needs an AppImage for the Prosody XMPP server. This AppImage is provided by the [Prosody AppImage](https://github.com/JohnXLivingston/prosody-appimage) sideproject. The `build-prosody.sh` script download binaries attached to this remote repository, and checks that their sha256 hashsum are correct." msgstr "" +"Upozorňujeme, že tento zásuvný modul potřebuje pro server Prosody XMPP " +"obrázek aplikace. Tento AppImage poskytuje vedlejší projekt [Prosody " +"AppImage](https://github.com/JohnXLivingston/prosody-appimage). Skript " +"`build-prosody.sh` stáhne binární soubory připojené k tomuto vzdálenému " +"úložišti a zkontroluje, zda je jejich hashsum sha256 správný." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Clone the repository, buid the plugin, and create your feature branch:" -msgstr "" +msgstr "Klonujte úložiště, vytvořte zásuvný modul a vytvořte větev kódu:" #. type: Fenced code block (bash) #: support/documentation/content/en/contributing/develop/_index.md @@ -182,26 +210,61 @@ msgid "" "git push --set-upstream me my_development\n" "# Then go to your github repository with your web browser to propose the Pull Request (see additional instructions below)\n" msgstr "" +"# Klonování úložiště. Nezapomeňte na --recursive pro klonování podmodulů.\n" +"git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --" +"recursive\n" +"\n" +"cd peertube-plugin-livechat\n" +"\n" +"# Nainstalujte závislosti NPM a poprvé sestavte modul:\n" +"Npm install\n" +"\n" +"# Sestavte zásuvný modul po úpravě:\n" +"npm run build\n" +"\n" +"# Pokud máte fork z repozitáře, přidejte jej jako vzdálený (příklad):\n" +"git remote add me git@github.com:MY_GITHUB_ACCOUNT/peertube-plugin-livechat." +"git\n" +"\n" +"# Vytvořte místní větev pro svůj vývoj a zkontrolujteji (příklad):\n" +"git checkout my_development # Poznámka: pokud je přidružena nějaká " +"záležitost, použijte jako název větve fix_1234 (kde 1234 je číslo issue).\n" +"# Chcete-li navrhnout své úpravy, odešlete svou větev do úložiště (příklad):" +"\n" +"git push --set-upstream me my_development\n" +"# Poté přejděte do svého úložiště github pomocí webového prohlížeče a " +"navrhněte žádost o stažení (viz další pokyny níže).\n" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Once you are ready to show your code to ask for feedback, submit a *draft* Pull Request. Once you are ready for a code review before merge, submit a Pull Request. In any case, please link your PR to the issues it solves by using the GitHub syntax: \"fixes #issue_number\"." msgstr "" +"Jakmile jste připraveni ukázat svůj kód a požádat o zpětnou vazbu, odešlete " +"*návrh* žádosti o stažení. Jakmile jste připraveni na kontrolu kódu před " +"sloučením, odešlete žádost o stažení. V každém případě prosíme o propojení " +"vašeho PR s problémy, které řeší, pomocí syntaxe GitHubu: \"fixes #" +"issue_number\"." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "The front-end code is in the `client` folder, the back-end code in `server`. There are some shared code in `shared` folder." msgstr "" +"Kód front-endu je ve složce `client`, kód back-endu ve složce `server`. Ve " +"složce `shared` je několik sdílených kódů." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "For general instructions (developping plugins, building, installation, ...), please refer to the [Peertube documentation](https://docs.joinpeertube.org/contribute-plugins?id=write-a-plugintheme)." msgstr "" +"Obecné pokyny (vývoj zásuvných modulů, sestavení, instalace, ...) naleznete " +"v dokumentaci [Peertube](https://docs.joinpeertube.org/contribute-" +"plugins?id=write-a-plugintheme)." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "You can build the plugin with extra debug features simply by using:" msgstr "" +"Zásuvný modul můžete sestavit s dalšími funkcemi ladění jednoduše pomocí:" #. type: Fenced code block (bash) #: support/documentation/content/en/contributing/develop/_index.md @@ -213,75 +276,112 @@ msgstr "" #: support/documentation/content/en/contributing/develop/_index.md msgid "This plugin is [REUSE](https://reuse.software/) compliant: it uses SPDX headers to identify licensing information of its source code. More information on the [REUSE](https://reuse.software/) website. You can use the [reuse](https://reuse.readthedocs.io/en/stable/readme.html#) command line tool to help you update headers. The `npm run lint` command will use the `reuse` command to check compliance. Don't forget to add your copyright information in SPDX headers when you modify some code." msgstr "" +"Tento zásuvný modul je v souladu s [REUSE](https://reuse.software/): používá " +"hlavičky SPDX k identifikaci licenčních informací svého zdrojového kódu. " +"Více informací naleznete na webových stránkách [REUSE](https://reuse." +"software/). K aktualizaci hlaviček můžete použít nástroj příkazového řádku " +"[reuse](https://reuse.readthedocs.io/en/stable/readme.html#). Příkaz `npm " +"run lint` použije ke kontrole shody příkaz `reuse`. Nezapomeňte do hlaviček " +"SPDX přidat informace o autorských právech, když upravujete nějaký kód." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "ESBuild vs Typescript" -msgstr "" +msgstr "ESBuild vs Typescript" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "This plugin uses ESBuild for frontend code generation, as the official `peertube-plugin-quickstart` plugin. ESBuild can handle Typescript, but does not check types (see [ESBuild documentation](https://esbuild.github.io/content-types/#typescript)). That's why we first compile Typescript with the `-noEmit` option, just to check types (`check:client:ts` in package.json file). Then, if everything is okay, we run ESBuild to generate the compiled javascript." msgstr "" +"Tento zásuvný modul používá ESBuild pro generování frontend kódu, stejně " +"jako oficiální zásuvný modul `peertube-plugin-quickstart`. ESBuild si " +"poradí s Typescriptem, ale nekontroluje typy (viz [dokumentace " +"ESBuild](https://esbuild.github.io/content-types/#typescript)). Proto " +"nejprve zkompilujeme Typescript s volbou `-noEmit`, jen abychom " +"zkontrolovali typy (`check:client:ts` v souboru package.json). Pokud je vše " +"v pořádku, spustíme ESBuild a vygenerujeme zkompilovaný javascript." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Debug Mode" -msgstr "" +msgstr "Režim ladění" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "There is a debug mode for this plugin, that shorten some delay. For example, some log files will rotate every two minutes, instead of once per day. This permit to test more easily certain actions, for which it could normally take hours or days to wait." msgstr "" +"Pro tento zásuvný modul existuje režim ladění, který zkracuje určité " +"zpoždění. Například některé soubory protokolu se budou otáčet každé dvě " +"minuty místo jednou denně. To umožňuje snadněji testovat některé akce, na " +"které by se normálně čekalo hodiny nebo dny." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "To enable this mode, you juste have to create the `/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/debug_mode` file (replacing `/var/www/peertube/storage/` by the correct path on your installation)." msgstr "" +"Pro zapnutí tohoto režimu stačí vytvořit soubor `/var/www/peertube/storage/" +"plugins/data/peertube-plugin-livechat/debug_mode` (nahradit `/var/www/" +"peertube/storage/` správnou cestou ve vaší instalaci)." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "The simple existence of this file is sufficient to trigger the debug mode. To make sure it's taken into account, you can restart your Peertube instance." msgstr "" +"Ke spuštění režimu ladění stačí pouhá existence tohoto souboru. Chcete-li " +"se ujistit, že je brán v úvahu, můžete restartovat instanci Peertube." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "This file can contain some JSON to enable more advanced options. To have a list of existing parameters, check `server/lib/debug.ts`. Restart Peertube after each content modification." msgstr "" +"Tento soubor může obsahovat některé JSON, které umožňují pokročilejší " +"možnosti. Seznam existujících parametrů naleznete v souboru `server/lib/" +"debug.ts`. Po každé úpravě obsahu restartujte Peertube." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Don't enable this mode on a production server, neither on a public server. This could cause security issues." msgstr "" +"Tento režim nepovolujte na produkčním serveru, ani na veřejném serveru. " +"Mohlo by to způsobit bezpečnostní problémy." #. type: Title ### #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Restart Prosody" -msgstr "" +msgstr "Restart Prosody" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "When debug mode is enabled, you can restart Prosody using this API call: `http://your_instance.tld/plugins/livechat/router/api/restart_prosody`. This call don't need any authentificaiton. It can be done from a command line, for example using `curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody`." msgstr "" +"Když je povolen režim ladění, můžete pomocí tohoto volání API restartovat " +"aplikaci Prosody: `http://your_instance.tld/plugins/livechat/router/api/" +"restart_prosody`. Toto volání nepotřebuje žádné ověření. Lze jej provést z " +"příkazového řádku, například pomocí příkazu `curl http://your_instance.tld/" +"plugins/livechat/router/api/restart_prosody`." #. type: Title ### #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Prosody debugger" -msgstr "" +msgstr "Prosody debugger" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "It is possible to connect the Prosody AppImage to a remote debugger using [MobDebug](https://luarocks.org/modules/paulclinger/mobdebug)." msgstr "" +"Prosody AppImage je možné připojit ke vzdálenému debuggeru pomocí " +"[MobDebug](https://luarocks.org/modules/paulclinger/mobdebug)." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "To do so, you have to setup MobDebug in a folder that can be accessed by the `peertube` user. Then, add this in the `debub_mode` file:" msgstr "" +"Chcete-li tak učinit, musíte nastavit MobDebug ve složce, ke které má " +"přístup uživatel `peertube`. Pak to přidejte do souboru `debub_mode`:" #. type: Fenced code block (json) #: support/documentation/content/en/contributing/develop/_index.md @@ -295,63 +395,93 @@ msgid "" " }\n" "}\n" msgstr "" +"{\n" +" \"debug_prosody\": {\n" +" \"debugger_path\": \"/the_path_to_mobdebug/src\",\n" +" \"host\": \"localhost\",\n" +" \"port\": \"8172\"\n" +" }\n" +"}\n" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "`host` and `port` are optional. `debugger_path` must point to the folder where the `MobDebug` `.lua` file is." msgstr "" +"`host` a `port` jsou volitelné. `debugger_path` musí ukazovat na složku, kde " +"je soubor `.lua` `MobDebug`." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Restart Peertube." -msgstr "" +msgstr "Restartujte Peertube." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Start your debugger server." -msgstr "" +msgstr "Spusťte svůj ladicí server." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "For Prosody to connect to the debugger, call the API `http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true`. This call does not need any authentication. It can be done from a command line, for example with `curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true`. You can even configure your debug server to launch this request automatically." msgstr "" +"Aby se Prosody připojil k debuggeru, zavolejte API `http://your_instance.tld/" +"plugins/livechat/router/api/restart_prosody?debugger=true`. Tento hovor " +"nevyžaduje žádné ověření. Lze to provést z příkazového řádku, například " +"pomocí `curl http://your_instance.tld/plugins/livechat/router/api/" +"restart_prosody?debugger=true`. Můžete dokonce nakonfigurovat svůj ladicí " +"server tak, aby tento požadavek spouštěl automaticky." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Prosody will then restart, connecting to the debugger." -msgstr "" +msgstr "Prosody se poté restartuje a připojí se k debuggeru." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Quick dev environment using Docker" -msgstr "" +msgstr "Rychlé vývojářské prostředí pomocí Dockeru" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "There is a tutorial, in french, on the [Peertube forum](https://framacolibri.org/t/tutoriel-creer-un-environnement-de-developpement-de-plugin-peertube-rapidement-en-utilisant-docker-et-qui-permet-de-tester-la-federation/17631) that explains how to quickly build a dev env using Docker." msgstr "" +"Na [fóru Peertube] je výukový program ve francouzštině (https://framacolibri." +"org/t/tutoriel-creer-un-environnement-de-developpement-de-plugin-peertube-" +"rapidement-en-utilisant-docker -et-qui-permet-de-tester-la-federation/17631)" +", který vysvětluje, jak rychle vytvořit prostředí pro vývojáře pomocí Docker." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "A repo was made out of it, check out [pt-plugin-dev](https://codeberg.org/mose/pt-plugin-dev)." msgstr "" +"Bylo z toho vytvořeno repo, podívejte se na [pt-plugin-dev](https://codeberg." +"org/mose/pt-plugin-dev)." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Note: for an unknown reason, Prosody can't resolve containers DNS address when using the lua-unbound library. There is a dirty hack in the plugin: just create a `/data/plugins/data/peertube-plugin-livechat/no_lua_unbound` file in your docker-volumes, then restart containers." msgstr "" +"Poznámka: Z neznámého důvodu nemůže Prosody rozlišit adresy DNS kontejnerů " +"při použití knihovny lua-unbound. V pluginu je špinavý hack: stačí vytvořit " +"soubor `/data/plugins/data/peertube-plugin-livechat/no_lua_unbound` ve vašem " +"docker-volume a restartovat kontejnery." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md #, no-wrap msgid "Quickly rebuild and install the plugin" -msgstr "" +msgstr "Rychle znovu sestavte a nainstalujte plugin" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "When you do modification, you don't have to always rebuild the full project, and reinstall the plugin on your dev environment. You can build only the modified part (for example, if you only modified client files: `npm run build:client`). Check the `package.json` files for available build scripts." msgstr "" +"Když provádíte úpravy, nemusíte vždy znovu sestavovat celý projekt a znovu " +"instalovat plugin do vašeho vývojového prostředí. Můžete sestavit pouze " +"upravenou součást (pokud jste například upravili pouze soubory klienta: `npm " +"spustit build:client`). V souborech `package.json` vyhledejte dostupné " +"skripty sestavení." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -583,7 +713,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +2008,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2741,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2819,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3236,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3283,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3433,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3494,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3634,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +4024,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4203,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4293,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4503,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4657,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index 97bd10c3..23697e82 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" -"PO-Revision-Date: 2024-08-31 17:22+0000\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" +"PO-Revision-Date: 2024-09-15 01:49+0000\n" "Last-Translator: Victor Hampel " "\n" "Language-Team: German = 0.69) auf Ihrem Com #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Some linux distro (like Debian Bullseye for example) have too old version of `po4a`. Please make sure to install a compatible version. If you are using Debian Bullseye for example, you can download the Bookworm po4a.deb file from [https://packages.debian.org](https://packages.debian.org/bookworm/all/po4a/download), and install it manually." -msgstr "Einige Linux-Distributionen (wie Debian Bullseye zum Beispiel) haben eine zu alte Version von `po4a`. Bitte stellen Sie sicher, dass Sie eine kompatible Version installieren. Wenn Sie zum Beispiel Debian Bullseye benutzen, können Sie die Bookworm po4a.deb Datei von [https://packages.debian.org](https://packages.debian.org/bookworm/all/po4a/download) herunterladen und manuell installieren." +msgid "" +"Some linux distro (like Debian Bullseye for example) have too old version of " +"`po4a`. Please make sure to install a compatible version. If you are using " +"Debian Bullseye for example, you can download the Bookworm po4a.deb file " +"from [https://packages.debian.org](https://packages.debian.org/bookworm/all/" +"po4a/download), and install it manually." +msgstr "" +"Einige Linux-Distributionen (wie Debian Bullseye zum Beispiel) haben eine zu " +"alte Version von `po4a`. Bitte stellen Sie sicher, dass Sie eine kompatible " +"Version installieren. Wenn Sie zum Beispiel Debian Bullseye benutzen, können " +"Sie die Bookworm po4a.deb Datei von [https://packages.debian.org](https://" +"packages.debian.org/bookworm/all/po4a/download) herunterladen und manuell " +"installieren." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md @@ -571,8 +877,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "You can then preview the result using `hugo serve -s support/documentation/`, and using the language selector." -msgstr "Sie können dann eine Vorschau des Ergebnisses mit `hugo serve -s support/documentation/` und unter Verwendung der Sprachauswahl anzeigen." +msgid "" +"You can then preview the result using `hugo serve -s support/documentation/" +"`, and using the language selector." +msgstr "" +"Sie können dann eine Vorschau des Ergebnisses mit `hugo serve -s support/" +"documentation/` und unter Verwendung der Sprachauswahl anzeigen." #. type: Title ## #: support/documentation/content/en/contributing/document/_index.md @@ -583,42 +893,95 @@ msgstr "Dokumentation schreiben" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md msgid "Just edit the english files in `support/documentation/content/en`." -msgstr "Bearbeiten Sie einfach die englischen Dateien in `support/documentation/content/en`." +msgstr "" +"Bearbeiten Sie einfach die englischen Dateien in `support/documentation/" +"content/en`." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Then, before commiting, always run `npm run doc:translate`, so that changes in english files can be propagated to the `support/documentation/po/livechat.en.pot` file." -msgstr "Führen Sie dann vor dem Commit immer `npm run doc:translate` aus, so dass Änderungen in den englischen Dateien in die Datei `support/documentation/po/livechat.en.pot` übertragen werden können." +msgid "" +"Then, before commiting, always run `npm run doc:translate`, so that changes " +"in english files can be propagated to the `support/documentation/po/livechat." +"en.pot` file." +msgstr "" +"Führen Sie dann vor dem Commit immer `npm run doc:translate` aus, so dass " +"Änderungen in den englischen Dateien in die Datei `support/documentation/po/" +"livechat.en.pot` übertragen werden können." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "You can use the `livechat_label` short code to use application strings. See here: [Documentation translation](/peertube-plugin-livechat/contributing/translate/#documentation-translation)." -msgstr "Du kannst den Shortcode `livechat_label` verwenden, um Anwendungsstrings zu verwenden. Siehe hier: [Dokumentation übersetzen](/peertube-plugin-livechat/de/contributing/translate/#documentation-translation)." +msgid "" +"You can use the `livechat_label` short code to use application strings. See " +"here: [Documentation translation](/peertube-plugin-livechat/contributing/" +"translate/#documentation-translation)." +msgstr "" +"Du kannst den Shortcode `livechat_label` verwenden, um Anwendungsstrings zu " +"verwenden. Siehe hier: [Dokumentation übersetzen](/peertube-plugin-livechat/" +"de/contributing/translate/#documentation-translation)." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "It is possible to prevent a file from beeing translating, using `livechatnotranslation: true` in the Yaml Font Matter section. See here: [Documentation translation](/peertube-plugin-livechat/contributing/translate/#documentation-translation)." -msgstr "Es ist möglich zu verhindern, dass eine Datei übersetzt wird, indem man `livechatnotranslation: true` in der Yaml Font Matter Sektion benutzt. Siehe hier: [Dokumentation übersetzen](/peertube-plugin-livechat/de/contributing/translate/#documentation-translation)." +msgid "" +"It is possible to prevent a file from beeing translating, using " +"`livechatnotranslation: true` in the Yaml Font Matter section. See here: " +"[Documentation translation](/peertube-plugin-livechat/contributing/translate/" +"#documentation-translation)." +msgstr "" +"Es ist möglich zu verhindern, dass eine Datei übersetzt wird, indem man " +"`livechatnotranslation: true` in der Yaml Font Matter Sektion benutzt. Siehe " +"hier: [Dokumentation übersetzen](/peertube-plugin-livechat/de/contributing/" +"translate/#documentation-translation)." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Please use the `livechatnotranslation` option for technical documentation. We don't want technical documentation to be translated, to avoid issues because of a wrong translation." -msgstr "Bitte verwenden Sie die Option `livechatnotranslation` für technische Dokumentation. Wir möchten nicht, dass die technische Dokumentation übersetzt wird, um Probleme aufgrund einer falschen Übersetzung zu vermeiden." +msgid "" +"Please use the `livechatnotranslation` option for technical documentation. " +"We don't want technical documentation to be translated, to avoid issues " +"because of a wrong translation." +msgstr "" +"Bitte verwenden Sie die Option `livechatnotranslation` für technische " +"Dokumentation. Wir möchten nicht, dass die technische Dokumentation " +"übersetzt wird, um Probleme aufgrund einer falschen Übersetzung zu vermeiden." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md msgid "To facilitate translators work, avoid making too long paragraphs." -msgstr "Um den Übersetzern die Arbeit zu erleichtern, sollten Sie zu lange Absätze vermeiden." +msgstr "" +"Um den Übersetzern die Arbeit zu erleichtern, sollten Sie zu lange Absätze " +"vermeiden." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "For now, it is not possible to use Markdown tables: the translation tools will break them." -msgstr "Im Moment ist es nicht möglich, Markdown-Tabellen zu verwenden: Die Übersetzungswerkzeuge würden sie nicht korrekt darstellen." +msgid "" +"For now, it is not possible to use Markdown tables: the translation tools " +"will break them." +msgstr "" +"Im Moment ist es nicht möglich, Markdown-Tabellen zu verwenden: Die " +"Übersetzungswerkzeuge würden sie nicht korrekt darstellen." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." -msgstr "Möglicherweise gibt es Links zur Dokumentation an anderer Stelle im Web. Versuchen Sie nicht, die URLs der Dokumentationsseiten zu ändern. Oder setzen Sie zumindest Links zum neuen Ort auf die vorherige URL." +msgid "" +"There may be links to this documentation elsewhere on the web. Try not to " +"change the urls of the documentation pages. Or at the very least, put links " +"to the new location on the previous url." +msgstr "" +"Möglicherweise gibt es Links zu dieser Dokumentation an anderer Stelle im " +"Web. Versuchen Sie nicht, die URLs der Dokumentationsseiten zu ändern. " +"Oder setzen Sie zumindest Links zum neuen Ort auf die vorherige URL." + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "" +"When a new feature is released, you can use the `livechat_version_notice` " +"short code to display an infobox with the version with which the features is " +"available. This short code takes the version number as parameter. Here is " +"an example:" +msgstr "" +"Wenn eine neue Funktion veröffentlicht wird, können Sie den Shortcode " +"`livechat_version_notice` verwenden, um eine Infobox mit der Version " +"anzuzeigen, mit der die Funktion verfügbar ist. Dieser Shortcode nimmt die " +"Versionsnummer als Parameter. Hier ist ein Beispiel:" #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md @@ -628,8 +991,13 @@ msgstr "Was ist, wenn ich hugo und/oder po4a nicht verwenden kann?" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Just edit english markdown files, and specify that you can't build translations when you make your Pull Request." -msgstr "Bearbeiten Sie einfach die englischen Markdown-Dateien und geben Sie an, dass Sie keine Übersetzungen erstellen können, wenn Sie Ihren Pull Request stellen." +msgid "" +"Just edit english markdown files, and specify that you can't build " +"translations when you make your Pull Request." +msgstr "" +"Bearbeiten Sie einfach die englischen Markdown-Dateien und geben Sie an, " +"dass Sie keine Übersetzungen erstellen können, wenn Sie Ihren Pull Request " +"stellen." #. type: Title ## #: support/documentation/content/en/contributing/document/_index.md @@ -639,8 +1007,12 @@ msgstr "Veröffentlichung" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Publishing the documentation is automatic, as soon as the changes are merged into the `documentation` branch." -msgstr "Die Veröffentlichung der Dokumentation erfolgt automatisch, sobald die Änderungen in den `documentation` Zweig eingefügt wurden." +msgid "" +"Publishing the documentation is automatic, as soon as the changes are merged " +"into the `documentation` branch." +msgstr "" +"Die Veröffentlichung der Dokumentation erfolgt automatisch, sobald die " +"Änderungen in den `documentation` Zweig eingefügt wurden." #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/contributing/feedback/_index.md @@ -650,8 +1022,16 @@ msgstr "Geben Sie Ihr Feedback" #. type: Plain text #: support/documentation/content/en/contributing/feedback/_index.md -msgid "You don't need to know how to code to start contributing to this plugin! Other contributions are very valuable too, among which: you can test the software and report bugs, you can give feedback, features that you are interested in, user interface, design, ..." -msgstr "Sie müssen keine Programmierkenntnisse haben, um zu diesem Plugin beizutragen! Andere Beiträge sind auch sehr wertvoll, darunter: Sie können die Software testen und Fehler melden, Sie können Feedback geben, Funktionen die Sie interessieren, Benutzeroberfläche, Design, ..." +msgid "" +"You don't need to know how to code to start contributing to this plugin! " +"Other contributions are very valuable too, among which: you can test the " +"software and report bugs, you can give feedback, features that you are " +"interested in, user interface, design, ..." +msgstr "" +"Sie müssen keine Programmierkenntnisse haben, um zu diesem Plugin " +"beizutragen! Andere Beiträge sind auch sehr wertvoll, darunter: Sie können " +"die Software testen und Fehler melden, Sie können Feedback geben, Funktionen " +"die Sie interessieren, Benutzeroberfläche, Design, ..." #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/contributing/_index.md @@ -678,13 +1058,23 @@ msgstr "Übersätzen" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "You can contribute to this plugin translation. Translations are handled using the [Weblate](https://weblate.org/) software, using [Framasoft Weblate instance](https://weblate.framasoft.org/)." -msgstr "Sie können zur Übersetzung dieses Plugins beitragen. Die Übersetzungen werden mit der Software [Weblate](https://weblate.org/) unter Verwendung der [Framasoft Weblate Instanz](https://weblate.framasoft.org/) bearbeitet." +msgid "" +"You can contribute to this plugin translation. Translations are handled " +"using the [Weblate](https://weblate.org/) software, using [Framasoft Weblate " +"instance](https://weblate.framasoft.org/)." +msgstr "" +"Sie können zur Übersetzung dieses Plugins beitragen. Die Übersetzungen " +"werden mit der Software [Weblate](https://weblate.org/) unter Verwendung der " +"[Framasoft Weblate Instanz](https://weblate.framasoft.org/) bearbeitet." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Never modify directly files in the `languages` folder, this could lead to conflicts." -msgstr "Ändern Sie niemals direkt Dateien im Ordner `languages`, dies könnte zu Konflikten führen." +msgid "" +"Never modify directly files in the `languages` folder, this could lead to " +"conflicts." +msgstr "" +"Ändern Sie niemals direkt Dateien im Ordner `languages`, dies könnte zu " +"Konflikten führen." #. type: Title ## #: support/documentation/content/en/contributing/translate/_index.md @@ -695,7 +1085,8 @@ msgstr "Wie funktioniert es" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md msgid "Create an account: https://weblate.framasoft.org/accounts/register/" -msgstr "Erstellen Sie ein Konto: https://weblate.framasoft.org/accounts/register/" +msgstr "" +"Erstellen Sie ein Konto: https://weblate.framasoft.org/accounts/register/" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md @@ -709,8 +1100,12 @@ msgstr "Erstellen Sie Ihr Passwort und richten Sie Ihr Konto ein" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md -msgid "Go to the plugin project page: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/" -msgstr "Rufen Sie die Projektseite des Plugins auf: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/" +msgid "" +"Go to the plugin project page: https://weblate.framasoft.org/projects/" +"peertube-livechat/peertube-plugin-livechat/" +msgstr "" +"Rufen Sie die Projektseite des Plugins auf: https://weblate.framasoft.org/" +"projects/peertube-livechat/peertube-plugin-livechat/" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md @@ -719,13 +1114,23 @@ msgstr "Wählen Sie die Sprache, die Sie übersetzen möchten" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md -msgid "Just translate missing sentences, or correct the ones that seems incorrect to you." -msgstr "Übersetzen Sie einfach die fehlenden Sätze, oder korrigieren Sie die Sätze, die Ihnen falsch erscheinen." +msgid "" +"Just translate missing sentences, or correct the ones that seems incorrect " +"to you." +msgstr "" +"Übersetzen Sie einfach die fehlenden Sätze, oder korrigieren Sie die Sätze, " +"die Ihnen falsch erscheinen." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "There might be some «very technical» strings. If you are not 100% sure of the meaning, or of your translation, you better not translate it, so it will display in english." -msgstr "Es könnte einige «sehr technische» Zeichenfolgen geben. Wenn Sie sich der Bedeutung oder Ihrer Übersetzung nicht 100%ig sicher sind, sollten Sie sie besser nicht übersetzen, damit sie in Englisch angezeigt werden." +msgid "" +"There might be some «very technical» strings. If you are not 100% sure of " +"the meaning, or of your translation, you better not translate it, so it will " +"display in english." +msgstr "" +"Es könnte einige «sehr technische» Zeichenfolgen geben. Wenn Sie sich der " +"Bedeutung oder Ihrer Übersetzung nicht 100%ig sicher sind, sollten Sie sie " +"besser nicht übersetzen, damit sie in Englisch angezeigt werden." #. type: Title ## #: support/documentation/content/en/contributing/translate/_index.md @@ -735,8 +1140,20 @@ msgstr "ConverseJS Übersetzungen" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "This plugin relies on [ConverseJS](https://conversejs.org/) for the chat front-end. ConverseJS has its own translations, on its own [weblate instance](https://hosted.weblate.org/projects/conversejs/#languages). You can also translate directly in the code repository. For more information, check [ConverseJS translations documentation](https://conversejs.org/docs/html/translations.html)." -msgstr "Dieses Plugin verlässt sich auf [ConverseJS](https://conversejs.org/) für das Chat-Frontend. ConverseJS hat seine eigenen Übersetzungen, in seiner eigenen [Weblateinstanz](https://hosted.weblate.org/projects/conversejs/#languages). Sie können auch direkt im Code-Repository übersetzen. Weitere Informationen finden Sie in der [ConverseJS Übersetzungsdokumentation](https://conversejs.org/docs/html/translations.html)." +msgid "" +"This plugin relies on [ConverseJS](https://conversejs.org/) for the chat " +"front-end. ConverseJS has its own translations, on its own [weblate " +"instance](https://hosted.weblate.org/projects/conversejs/#languages). You " +"can also translate directly in the code repository. For more information, " +"check [ConverseJS translations documentation](https://conversejs.org/docs/" +"html/translations.html)." +msgstr "" +"Dieses Plugin verlässt sich auf [ConverseJS](https://conversejs.org/) für " +"das Chat-Frontend. ConverseJS hat seine eigenen Übersetzungen, in seiner " +"eigenen [Weblateinstanz](https://hosted.weblate.org/projects/conversejs/" +"#languages). Sie können auch direkt im Code-Repository übersetzen. Weitere " +"Informationen finden Sie in der [ConverseJS Übersetzungsdokumentation]" +"(https://conversejs.org/docs/html/translations.html)." #. type: Title ## #: support/documentation/content/en/contributing/translate/_index.md @@ -746,8 +1163,15 @@ msgstr "Eine neues Sprachgebiet hinzufügen" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "If you think there is a missing locale, please check first if it is handled in Peertube. If so, you can [open an issue](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues) to ask for it." -msgstr "Wenn Sie glauben, dass eine Sprache fehlt, prüfen Sie bitte zuerst, ob sie von Peertube unterstützt wird. Wenn ja, können Sie [ein Problem erstellen](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues), um danach zu fragen." +msgid "" +"If you think there is a missing locale, please check first if it is handled " +"in Peertube. If so, you can [open an issue](https://github.com/" +"JohnXLivingston/peertube-plugin-livechat/issues) to ask for it." +msgstr "" +"Wenn Sie glauben, dass eine Sprache fehlt, prüfen Sie bitte zuerst, ob sie " +"von Peertube unterstützt wird. Wenn ja, können Sie [ein Problem erstellen]" +"(https://github.com/JohnXLivingston/peertube-plugin-livechat/issues), um " +"danach zu fragen." #. type: Title ## #: support/documentation/content/en/contributing/translate/_index.md @@ -757,18 +1181,35 @@ msgstr "Hinzufügen neuer Zeichenfolgen / Verwendung von Übersetzungen im Code" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "If you are working on new features, and need new strings, you can create them directly in Weblate. The english version is mandatory. Start with it." -msgstr "Wenn Sie an neuen Funktionen arbeiten und neue Zeichenketten benötigen, können Sie diese direkt in Weblate erstellen. Die englische Version ist obligatorisch. Beginnen Sie mit ihr." +msgid "" +"If you are working on new features, and need new strings, you can create " +"them directly in Weblate. The english version is mandatory. Start with it." +msgstr "" +"Wenn Sie an neuen Funktionen arbeiten und neue Zeichenketten benötigen, " +"können Sie diese direkt in Weblate erstellen. Die englische Version ist " +"obligatorisch. Beginnen Sie mit ihr." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Each string is linked to a key (for example `use_chat`). Choose an explicit key in english, lower case." -msgstr "Jede Zeichenfolge ist mit einem Schlüssel verknüpft (z. B. `use_chat`). Wählen Sie einen expliziten Schlüssel in Englisch und nutzen Sie nur Kleinbuchstaben." +msgid "" +"Each string is linked to a key (for example `use_chat`). Choose an explicit " +"key in english, lower case." +msgstr "" +"Jede Zeichenfolge ist mit einem Schlüssel verknüpft (z. B. `use_chat`). " +"Wählen Sie einen expliziten Schlüssel in Englisch und nutzen Sie nur " +"Kleinbuchstaben." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "If you have to test new strings without waiting for a Weblate merge, you can modify `languages/*.yml` files, but avoid to commit these changes (to minimize conflict risks)." -msgstr "Wenn Sie neue Zeichenketten testen müssen, ohne auf einen Weblate-Zusammenschluss zu warten, können Sie die Dateien `languages/*.yml` ändern, aber vermeiden Sie es, diese Änderungen zu übertragen (um das Konfliktrisiko zu minimieren)." +msgid "" +"If you have to test new strings without waiting for a Weblate merge, you can " +"modify `languages/*.yml` files, but avoid to commit these changes (to " +"minimize conflict risks)." +msgstr "" +"Wenn Sie neue Zeichenketten testen müssen, ohne auf einen Weblate-" +"Zusammenschluss zu warten, können Sie die Dateien `languages/*.yml` ändern, " +"aber vermeiden Sie es, diese Änderungen zu übertragen (um das Konfliktrisiko " +"zu minimieren)." #. type: Title ### #: support/documentation/content/en/contributing/translate/_index.md @@ -778,8 +1219,13 @@ msgstr "Übersetzungen im Front-End-Code verwenden" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Before using a string in front-end, you need to declare a new constant in `client/@types/global.d.ts`. The constant name must:" -msgstr "Bevor Sie eine Zeichenkette im Frontend verwenden, müssen Sie eine neue Konstante in `client/@types/global.d.ts` deklarieren. Der Name der Konstante muss:" +msgid "" +"Before using a string in front-end, you need to declare a new constant in " +"`client/@types/global.d.ts`. The constant name must:" +msgstr "" +"Bevor Sie eine Zeichenkette im Frontend verwenden, müssen Sie eine neue " +"Konstante in `client/@types/global.d.ts` deklarieren. Der Name der " +"Konstante muss:" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/translate/_index.md @@ -809,13 +1255,21 @@ msgstr "declare const LOC_USE_CHAT: string\n" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "The `build-client.js` script will read the `client/@types/global.d.ts`, search for such constants, and load their values from the languages files." -msgstr "Das Skript `build-client.js` liest die `client/@types/global.d.ts`, sucht nach solchen Konstanten und lädt deren Werte aus den Sprachdateien." +msgid "" +"The `build-client.js` script will read the `client/@types/global.d.ts`, " +"search for such constants, and load their values from the languages files." +msgstr "" +"Das Skript `build-client.js` liest die `client/@types/global.d.ts`, sucht " +"nach solchen Konstanten und lädt deren Werte aus den Sprachdateien." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Now, you can simply call `peertubeHelpers.translate(LOC_USE_CHAT)` in your code." -msgstr "Jetzt können Sie einfach `peertubeHelpers.translate(LOC_USE_CHAT)` in Ihrem Code aufrufen." +msgid "" +"Now, you can simply call `peertubeHelpers.translate(LOC_USE_CHAT)` in your " +"code." +msgstr "" +"Jetzt können Sie einfach `peertubeHelpers.translate(LOC_USE_CHAT)` in Ihrem " +"Code aufrufen." #. type: Title ### #: support/documentation/content/en/contributing/translate/_index.md @@ -825,18 +1279,34 @@ msgstr "Übersetzungen im Backend-Code verwenden" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "In theory, the only parts of the backend code where you need localization is the settings declaration and standardized data (ActivityPub, RSS, ...). Here we need to get english strings from the translation key." -msgstr "Theoretisch sind die einzigen Teile des Backend-Codes, für die eine Lokalisierung erforderlich ist, die Deklaration der Einstellungen und standardisierte Daten (ActivityPub, RSS, ...). Hier müssen wir englische Zeichenketten aus dem Übersetzungsschlüssel holen." +msgid "" +"In theory, the only parts of the backend code where you need localization is " +"the settings declaration and standardized data (ActivityPub, RSS, ...). " +"Here we need to get english strings from the translation key." +msgstr "" +"Theoretisch sind die einzigen Teile des Backend-Codes, für die eine " +"Lokalisierung erforderlich ist, die Deklaration der Einstellungen und " +"standardisierte Daten (ActivityPub, RSS, ...). Hier müssen wir englische " +"Zeichenketten aus dem Übersetzungsschlüssel holen." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Note: you should never need another language translation from backend code. Localization must be done on front-end." -msgstr "Hinweis: Sie sollten nie eine weitere Sprachübersetzung vom Backend-Code benötigen. Die Lokalisierung muss im Frontend erfolgen." +msgid "" +"Note: you should never need another language translation from backend code. " +"Localization must be done on front-end." +msgstr "" +"Hinweis: Sie sollten nie eine weitere Sprachübersetzung vom Backend-Code " +"benötigen. Die Lokalisierung muss im Frontend erfolgen." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "There is a `lib/loc.ts` module providing a `loc()` function. Just pass it the key to have the english string: `loc('diagnostic')`'." -msgstr "Es gibt ein `lib/loc.ts` Modul, das eine `loc()` Funktion bereitstellt. Übergeben Sie ihr einfach den Schlüssel, um die englische Zeichenkette zu erhalten: `loc('diagnostic')`'." +msgid "" +"There is a `lib/loc.ts` module providing a `loc()` function. Just pass it " +"the key to have the english string: `loc('diagnostic')`'." +msgstr "" +"Es gibt ein `lib/loc.ts` Modul, das eine `loc()` Funktion bereitstellt. " +"Übergeben Sie ihr einfach den Schlüssel, um die englische Zeichenkette zu " +"erhalten: `loc('diagnostic')`'." #. type: Title ## #: support/documentation/content/en/contributing/translate/_index.md @@ -846,13 +1316,25 @@ msgstr "Übersätzungs-Dokumentation" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "The documentation translation is done using the corresponding Weblate component." -msgstr "Die Übersetzung der Dokumentation erfolgt mit Hilfe der entsprechenden Weblate-Komponente." +msgid "" +"The documentation translation is done using the corresponding Weblate " +"component." +msgstr "" +"Die Übersetzung der Dokumentation erfolgt mit Hilfe der entsprechenden " +"Weblate-Komponente." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "There is a specific \"Hugo shortcodes\" you can use to display an application string. Saying you want to display the name of the button \"open_chat_new_window\", you can use this in the documentation markdown file:" -msgstr "Es gibt einen speziellen \"Hugo Shortcode\", den Sie verwenden können, um eine Anwendungszeichenkette anzuzeigen. Wenn Sie beispielsweise den Namen der Schaltfläche \"open_chat_new_window\" anzeigen möchten, können Sie dies in der Markdown-Datei der Dokumentation verwenden:" +msgid "" +"There is a specific \"Hugo shortcodes\" you can use to display an " +"application string. Saying you want to display the name of the button " +"\"open_chat_new_window\", you can use this in the documentation markdown " +"file:" +msgstr "" +"Es gibt einen speziellen \"Hugo Shortcode\", den Sie verwenden können, um " +"eine Anwendungszeichenkette anzuzeigen. Wenn Sie beispielsweise den Namen " +"der Schaltfläche \"open_chat_new_window\" anzeigen möchten, können Sie dies " +"in der Markdown-Datei der Dokumentation verwenden:" #. type: Fenced code block (hugo) #: support/documentation/content/en/contributing/translate/_index.md @@ -862,8 +1344,12 @@ msgstr "{{%/* livechat_label open_chat_new_window */%}}\n" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "You can also prevent a whole page from being translating by adding `livechatnotranslation: true` in the Yaml Font Matter section:" -msgstr "Sie können auch verhindern, dass eine ganze Seite übersetzt wird, indem Sie `livechatnotranslation: true` in der Yaml Font Matter Sektion hinzufügen:" +msgid "" +"You can also prevent a whole page from being translating by adding " +"`livechatnotranslation: true` in the Yaml Font Matter section:" +msgstr "" +"Sie können auch verhindern, dass eine ganze Seite übersetzt wird, indem Sie " +"`livechatnotranslation: true` in der Yaml Font Matter Sektion hinzufügen:" #. type: Fenced code block (yaml) #: support/documentation/content/en/contributing/translate/_index.md @@ -887,33 +1373,74 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Never translate a string in the `livechat.en.pot` file, it would be ignored. Instead, edit directly the markdown files." -msgstr "Übersetze niemals eine Zeichenkette in der Datei `livechat.en.pot`, sie würde ignoriert werden. Bearbeiten Sie stattdessen direkt die Markdown-Dateien." +msgid "" +"Never translate a string in the `livechat.en.pot` file, it would be " +"ignored. Instead, edit directly the markdown files." +msgstr "" +"Übersetze niemals eine Zeichenkette in der Datei `livechat.en.pot`, sie " +"würde ignoriert werden. Bearbeiten Sie stattdessen direkt die Markdown-" +"Dateien." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "If a string contains a link, you can change it for the correct link in the translated language. For example, for a link to this documentation, you can add the language code in the url." -msgstr "Wenn eine Zeichenfolge einen Link enthält, können Sie ihn in den richtigen Link in der übersetzten Sprache ändern. Zum Beispiel können Sie für einen Link zu dieser Dokumentation den Sprachcode in die URL einfügen." +msgid "" +"If a string contains a link, you can change it for the correct link in the " +"translated language. For example, for a link to this documentation, you can " +"add the language code in the url." +msgstr "" +"Wenn eine Zeichenfolge einen Link enthält, können Sie ihn in den richtigen " +"Link in der übersetzten Sprache ändern. Zum Beispiel können Sie für einen " +"Link zu dieser Dokumentation den Sprachcode in die URL einfügen." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Some strings are block of code. Don't translate code. But you can translate comments, or parameters if relevant." -msgstr "Einige Zeichenfolgen sind Code-Blöcke. Übersetzen Sie den Code nicht. Aber Sie können Kommentare oder Parameter übersetzen, wenn sie relevant sind." +msgid "" +"Some strings are block of code. Don't translate code. But you can " +"translate comments, or parameters if relevant." +msgstr "" +"Einige Zeichenfolgen sind Code-Blöcke. Übersetzen Sie den Code nicht. Aber " +"Sie können Kommentare oder Parameter übersetzen, wenn sie relevant sind." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md msgid "If you are not sure, just don't translate, and ask what to do." -msgstr "Wenn Sie sich nicht sicher sind, übersetzen Sie einfach nicht und fragen Sie, was zu tun ist." +msgstr "" +"Wenn Sie sich nicht sicher sind, übersetzen Sie einfach nicht und fragen " +"Sie, was zu tun ist." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "The tool I use to handle translations for the documentation can have strange behaviours. When I add sentences that looks like other existing sentences, it sometimes copies existing translations. So, when you have translations marked as \"to check\", please make sure it doesn't copy a string that has nothing to do with the english one before validating." -msgstr "Das Tool, mit dem ich die Übersetzungen für die Dokumentation bearbeite, verhält sich manchmal seltsam. Wenn ich Sätze hinzufüge, die anderen bestehenden Sätzen ähneln, kopiert es manchmal bestehende Übersetzungen. Wenn Sie also Übersetzungen als \"zu prüfen\" markiert haben, stellen Sie bitte sicher, dass es vor der Validierung keine Zeichenfolge kopiert, die nichts mit der englischen zu tun hat." +msgid "" +"The tool I use to handle translations for the documentation can have strange " +"behaviours. When I add sentences that looks like other existing sentences, " +"it sometimes copies existing translations. So, when you have translations " +"marked as \"to check\", please make sure it doesn't copy a string that has " +"nothing to do with the english one before validating." +msgstr "" +"Das Tool, mit dem ich die Übersetzungen für die Dokumentation bearbeite, " +"verhält sich manchmal seltsam. Wenn ich Sätze hinzufüge, die anderen " +"bestehenden Sätzen ähneln, kopiert es manchmal bestehende Übersetzungen. " +"Wenn Sie also Übersetzungen als \"zu prüfen\" markiert haben, stellen Sie " +"bitte sicher, dass es vor der Validierung keine Zeichenfolge kopiert, die " +"nichts mit der englischen zu tun hat." #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "If you are now sure about the context of a string, you can check the string location in the weblate's right pane, and open the corresponding documentation page. For example, for a string located in the file `support/documentation/content/en/documentation/user/streamers.md`, the corresponding url is `https://livingston.frama.io/peertube-plugin-livechat/documentation/user/streamers/`." -msgstr "Wenn Sie sich nun über den Kontext einer Zeichenkette sicher sind, können Sie die Position der Zeichenkette im rechten Fensterbereich von weblate überprüfen und die entsprechende Dokumentationsseite öffnen. Für eine Zeichenfolge in der Datei `support/documentation/content/de/documentation/user/streamers.md` lautet die entsprechende URL beispielsweise `https://livingston.frama.io/peertube-plugin-livechat/de/documentation/user/streamers/`." +msgid "" +"If you are now sure about the context of a string, you can check the string " +"location in the weblate's right pane, and open the corresponding " +"documentation page. For example, for a string located in the file `support/" +"documentation/content/en/documentation/user/streamers.md`, the corresponding " +"url is `https://livingston.frama.io/peertube-plugin-livechat/documentation/" +"user/streamers/`." +msgstr "" +"Wenn Sie sich nun über den Kontext einer Zeichenkette sicher sind, können " +"Sie die Position der Zeichenkette im rechten Fensterbereich von weblate " +"überprüfen und die entsprechende Dokumentationsseite öffnen. Für eine " +"Zeichenfolge in der Datei `support/documentation/content/de/documentation/" +"user/streamers.md` lautet die entsprechende URL beispielsweise `https://" +"livingston.frama.io/peertube-plugin-livechat/de/documentation/user/streamers/" +"`." #. type: Title ## #: support/documentation/content/en/contributing/translate/_index.md @@ -923,8 +1450,12 @@ msgstr "Allgemeine Empfehlungen" #. type: Plain text #: support/documentation/content/en/contributing/translate/_index.md -msgid "Please be inclusive in your wordings, and please respect the [code of coduct](/peertube-plugin-livechat/contributing/codeofconduct/)." -msgstr "Bitte formulieren Sie umfassend und beachten Sie den [Verhaltenskodex](/peertube-plugin-livechat/de/contributing/codeofconduct/)." +msgid "" +"Please be inclusive in your wordings, and please respect the [code of coduct]" +"(/peertube-plugin-livechat/contributing/codeofconduct/)." +msgstr "" +"Bitte formulieren Sie umfassend und beachten Sie den [Verhaltenskodex](/" +"peertube-plugin-livechat/de/contributing/codeofconduct/)." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/credits/_index.md @@ -940,48 +1471,100 @@ msgstr "Impressum" #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "[package.json](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/package.json), [COPYRIGHT](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/COPYRIGHT.md) and [LICENSE](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/LICENSE) files contain the license information for this software and its dependencies." -msgstr "[package.json](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/package.json), [COPYRIGHT](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/COPYRIGHT.md) and [LICENSE](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/LICENSE) Dateien beinhalten die Lizenzinformationen für dieses Programm und seiner Abhängigkeiten." +msgid "" +"[package.json](https://github.com/JohnXLivingston/peertube-plugin-livechat/" +"blob/main/package.json), [COPYRIGHT](https://github.com/JohnXLivingston/" +"peertube-plugin-livechat/blob/main/COPYRIGHT.md) and [LICENSE](https://" +"github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/LICENSE) files " +"contain the license information for this software and its dependencies." +msgstr "" +"[package.json](https://github.com/JohnXLivingston/peertube-plugin-livechat/" +"blob/main/package.json), [COPYRIGHT](https://github.com/JohnXLivingston/" +"peertube-plugin-livechat/blob/main/COPYRIGHT.md) and [LICENSE](https://" +"github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/LICENSE) " +"Dateien beinhalten die Lizenzinformationen für dieses Programm und seiner " +"Abhängigkeiten." #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "The plugin is maintained by [John Livingston](https://www.john-livingston.fr/)." -msgstr "Das Plugin wird von [John Livingston](https://www.john-livingston.fr/) betrieben." +msgid "" +"The plugin is maintained by [John Livingston](https://www.john-livingston." +"fr/)." +msgstr "" +"Das Plugin wird von [John Livingston](https://www.john-livingston.fr/) " +"betrieben." #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "Thanks to David Revoy for his work on Peertube's mascot, [Sepia](https://www.davidrevoy.com/index.php?tag/peertube). The character design is under CC-By licence, and the SVG files used to create some logo and avatars in this plugin are GPLv3.0. PNG files are under CC-By licences, and comes from the [online Sepia Avatar Generator](https://www.peppercarrot.com/extras/html/2023_peertube-generator/)." -msgstr "Vielen Dank an David Revoy für seine Arbeit am Peertube-Maskottchen, [Sepia] (https://www.davidrevoy.com/index.php?tag/peertube). Das Charakterdesign steht unter CC-By-Lizenz, und die SVG-Dateien, die zur Erstellung einiger Logos und Avatare in diesem Plugin verwendet wurden, stehen unter GPLv3.0. Die PNG-Dateien stehen unter CC-By-Lizenzen und stammen aus dem [online Sepia Avatar Generator](https://www.peppercarrot.com/extras/html/2023_peertube-generator/)." +msgid "" +"Thanks to David Revoy for his work on Peertube's mascot, [Sepia](https://www." +"davidrevoy.com/index.php?tag/peertube). The character design is under CC-By " +"licence, and the SVG files used to create some logo and avatars in this " +"plugin are GPLv3.0. PNG files are under CC-By licences, and comes from the " +"[online Sepia Avatar Generator](https://www.peppercarrot.com/extras/" +"html/2023_peertube-generator/)." +msgstr "" +"Vielen Dank an David Revoy für seine Arbeit am Peertube-Maskottchen, [Sepia] " +"(https://www.davidrevoy.com/index.php?tag/peertube). Das Charakterdesign " +"steht unter CC-By-Lizenz, und die SVG-Dateien, die zur Erstellung einiger " +"Logos und Avatare in diesem Plugin verwendet wurden, stehen unter GPLv3.0. " +"Die PNG-Dateien stehen unter CC-By-Lizenzen und stammen aus dem [online " +"Sepia Avatar Generator](https://www.peppercarrot.com/extras/" +"html/2023_peertube-generator/)." #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "Thanks to [Framasoft](https://framasoft.org) for making [Peertube](https://joinpeertube.org/) possible, for the financial support, and for hosting the project translations on their [Weblate instance](https://weblate.framasoft.org)." -msgstr "Vielen Dank an [Framasoft](https://framasoft.org)für die Ermöglichung von [Peertube](https://joinpeertube.org/), für die finanzielle Unterstützung, und für das [Weblate](https://weblate.framasoft.org)." +msgid "" +"Thanks to [Framasoft](https://framasoft.org) for making [Peertube](https://" +"joinpeertube.org/) possible, for the financial support, and for hosting the " +"project translations on their [Weblate instance](https://weblate.framasoft." +"org)." +msgstr "" +"Vielen Dank an [Framasoft](https://framasoft.org)für die Ermöglichung von " +"[Peertube](https://joinpeertube.org/), für die finanzielle Unterstützung, " +"und für das [Weblate](https://weblate.framasoft.org)." #. type: Plain text #: support/documentation/content/en/credits/_index.md msgid "Thanks to [ritimo](https://www.ritimo.org/) for the financial support." -msgstr "Vielen Dank an [ritimo](https://www.ritimo.org/) für die finanzielle Unterstützung." +msgstr "" +"Vielen Dank an [ritimo](https://www.ritimo.org/) für die finanzielle " +"Unterstützung." #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "Thanks to [Code Lutin](https://www.codelutin.com/) and [Rétribution Copie Publique](https://copiepublique.fr/) for the financial support." -msgstr "Vielen Dank an [Code Lutin](https://www.codelutin.com/) und [Rétribution Copie Publique](https://copiepublique.fr/) für die finanzielle Unterstützung." +msgid "" +"Thanks to [Code Lutin](https://www.codelutin.com/) and [Rétribution Copie " +"Publique](https://copiepublique.fr/) for the financial support." +msgstr "" +"Vielen Dank an [Code Lutin](https://www.codelutin.com/) und [Rétribution " +"Copie Publique](https://copiepublique.fr/) für die finanzielle Unterstützung." #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "Thanks to [NlNet](https://nlnet.nl/) and the [NGI0 Entrust fund](https://nlnet.nl/entrust/) for the financial support." -msgstr "Vielen Dank an [NlNet](https://nlnet.nl/) und die [NGI0 Entrust fund](https://nlnet.nl/entrust/) für die finanzielle Unterstützung." +msgid "" +"Thanks to [NlNet](https://nlnet.nl/) and the [NGI0 Entrust fund](https://" +"nlnet.nl/entrust/) for the financial support." +msgstr "" +"Vielen Dank an [NlNet](https://nlnet.nl/) und die [NGI0 Entrust fund]" +"(https://nlnet.nl/entrust/) für die finanzielle Unterstützung." #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "Thanks to [Octopuce](https://www.octopuce.fr/) for the financial support." -msgstr "Vielen Dank an [Octopuce](https://www.octopuce.fr/) für die finanzielle Unterstützung." +msgid "" +"Thanks to [Octopuce](https://www.octopuce.fr/) for the financial support." +msgstr "" +"Vielen Dank an [Octopuce](https://www.octopuce.fr/) für die finanzielle " +"Unterstützung." #. type: Plain text #: support/documentation/content/en/credits/_index.md -msgid "And thanks to all individual contributors who have made a donation via my [liberapay page](https://liberapay.com/JohnLivingston/)." -msgstr "Und vielen Dank an alle Einzelspender, die über meine [Liberapay Seite] (https://liberapay.com/JohnLivingston/) gespendet haben." +msgid "" +"And thanks to all individual contributors who have made a donation via my " +"[liberapay page](https://liberapay.com/JohnLivingston/)." +msgstr "" +"Und vielen Dank an alle Einzelspender, die über meine [Liberapay Seite] " +"(https://liberapay.com/JohnLivingston/) gespendet haben." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/admin/advanced/_index.md @@ -1009,8 +1592,14 @@ msgstr "Matterbridge benutzen" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "The following is based on a tutorial to use Matterbridge with the plugin: [Matterbridge + Peertube](https://gitlab.com/refrac/obs-matterbridge-overlay/-/blob/master/documentation/peertube.md)" -msgstr "Das Folgende basiert auf einem Tutorial zur Verwendung von Matterbridge mit dem Plugin: [Matterbridge + Peertube](https://gitlab.com/refrac/obs-matterbridge-overlay/-/blob/master/documentation/peertube.md)" +msgid "" +"The following is based on a tutorial to use Matterbridge with the plugin: " +"[Matterbridge + Peertube](https://gitlab.com/refrac/obs-matterbridge-" +"overlay/-/blob/master/documentation/peertube.md)" +msgstr "" +"Das Folgende basiert auf einem Tutorial zur Verwendung von Matterbridge mit " +"dem Plugin: [Matterbridge + Peertube](https://gitlab.com/refrac/obs-" +"matterbridge-overlay/-/blob/master/documentation/peertube.md)" #. type: Title ## #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1020,18 +1609,30 @@ msgstr "Anforderungen" #. type: Bullet: '- ' #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "[PeerTube plugin livechat](https://github.com/JohnXLivingston/peertube-plugin-livechat) version 3.2.0 or later." -msgstr "[PeerTube plugin livechat](https://github.com/JohnXLivingston/peertube-plugin-livechat) Version 3.2.0 oder höher." +msgid "" +"[PeerTube plugin livechat](https://github.com/JohnXLivingston/peertube-" +"plugin-livechat) version 3.2.0 or later." +msgstr "" +"[PeerTube plugin livechat](https://github.com/JohnXLivingston/peertube-" +"plugin-livechat) Version 3.2.0 oder höher." #. type: Bullet: '- ' #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "[Matterbridge](https://github.com/42wim/matterbridge) version 1.22.4 or later." -msgstr "[Matterbridge](https://github.com/42wim/matterbridge) Version 1.22.4 oder höher." +msgid "" +"[Matterbridge](https://github.com/42wim/matterbridge) version 1.22.4 or " +"later." +msgstr "" +"[Matterbridge](https://github.com/42wim/matterbridge) Version 1.22.4 oder " +"höher." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "The easiest is if the PeerTube instance and Matterbridge run on the same server." -msgstr "Am einfachsten ist es, wenn die PeerTube-Instanz und Matterbridge auf demselben Server laufen." +msgid "" +"The easiest is if the PeerTube instance and Matterbridge run on the same " +"server." +msgstr "" +"Am einfachsten ist es, wenn die PeerTube-Instanz und Matterbridge auf " +"demselben Server laufen." #. type: Title ## #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1041,18 +1642,26 @@ msgstr "Nur interne Verbindungen (EInfach)" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "You will need to enable `{{% livechat_label prosody_c2s_label %}}` in the livechat plugin settings." -msgstr "Sie müssen `{{% livechat_label prosody_c2s_label %}}` in den Einstellungen des Livechat-Plugins aktivieren." +msgid "" +"You will need to enable `{{% livechat_label prosody_c2s_label %}}` in the " +"livechat plugin settings." +msgstr "" +"Sie müssen `{{% livechat_label prosody_c2s_label %}}` in den Einstellungen " +"des Livechat-Plugins aktivieren." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "This will allow localhost XMPP clients to connect to the Prosody XMPP server." -msgstr "Dadurch können XMPP-Clients von localhost eine Verbindung zum Prosody XMPP-Server herstellen." +msgid "" +"This will allow localhost XMPP clients to connect to the Prosody XMPP server." +msgstr "" +"Dadurch können XMPP-Clients von localhost eine Verbindung zum Prosody XMPP-" +"Server herstellen." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md msgid "You may need to add some line to your `/etc/hosts`:" -msgstr "Möglicherweise müssen Sie eine Zeile in Ihre Datei `/etc/hosts` hinzufügen:" +msgstr "" +"Möglicherweise müssen Sie eine Zeile in Ihre Datei `/etc/hosts` hinzufügen:" #. type: Fenced code block #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1062,8 +1671,13 @@ msgstr "127.0.0.1 anon.example.org raum.example.org\n" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "Replace `example.org` by your actual instance domain name. Afterwards you can continue with the Matterbridge configuration below." -msgstr "Ersetzen Sie `example.org` durch den Namen Ihrer tatsächlichen Instanzdomäne. Danach können Sie mit der Matterbridge-Konfiguration fortfahren." +msgid "" +"Replace `example.org` by your actual instance domain name. Afterwards you " +"can continue with the Matterbridge configuration below." +msgstr "" +"Ersetzen Sie `example.org` durch den Namen Ihrer tatsächlichen " +"Instanzdomäne. Danach können Sie mit der Matterbridge-Konfiguration " +"fortfahren." #. type: Title ## #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1073,8 +1687,12 @@ msgstr "Externe Verbindungen zulassen (Fortgeschritten)" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "By default, the internal Prosody XMPP server only listens on localhost (127.0.0.1)." -msgstr "Standardmäßig lauscht der interne Prosody XMPP-Server nur auf localhost (127.0.0.1)." +msgid "" +"By default, the internal Prosody XMPP server only listens on localhost " +"(127.0.0.1)." +msgstr "" +"Standardmäßig lauscht der interne Prosody XMPP-Server nur auf localhost " +"(127.0.0.1)." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1084,28 +1702,59 @@ msgstr "Dem Livechat Plugin Versionen >= 10.1.0 wurde eine neue Option `Client z #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "It allows to add a list of IPs to listen on, coma separated (spaces will be stripped)." -msgstr "Es ermöglicht das Hinzufügen einer Liste von IPs, die abgehört werden sollen, durch Kommata getrennt (Leerzeichen werden entfernt)." +msgid "" +"It allows to add a list of IPs to listen on, coma separated (spaces will be " +"stripped)." +msgstr "" +"Es ermöglicht das Hinzufügen einer Liste von IPs, die abgehört werden " +"sollen, durch Kommata getrennt (Leerzeichen werden entfernt)." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "You can also use `*` to listen on all IPv4 interfaces, and `::` for all IPv6. Doing so allows external access to the client to server interface." -msgstr "Sie können auch `*` verwenden, um an allen IPv4-Schnittstellen zu lauschen, und `::` für alle IPv6-Schnittstellen. Dadurch wird der externe Zugriff auf die Schnittstelle zwischen Client und Server ermöglicht." +msgid "" +"You can also use `*` to listen on all IPv4 interfaces, and `::` for all " +"IPv6. Doing so allows external access to the client to server interface." +msgstr "" +"Sie können auch `*` verwenden, um an allen IPv4-Schnittstellen zu lauschen, " +"und `::` für alle IPv6-Schnittstellen. Dadurch wird der externe Zugriff auf " +"die Schnittstelle zwischen Client und Server ermöglicht." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "Then you need to open the C2S port (by default `52822`, but check the plugin settings to get the current value) in your firewall so that it can be reached from the internet. If you don't want to use C2S connections for anything else than your Matterbridge service, you should restrict access to this port to your Matterbridge server IP." -msgstr "Dann müssen Sie den C2S-Port (standardmäßig `52822`, aber überprüfen Sie die Plugin-Einstellungen, um den aktuellen Wert zu erhalten) in Ihrer Firewall öffnen, damit er vom Internet aus erreicht werden kann. Wenn Sie C2S-Verbindungen nur für Ihren Matterbridge-Dienst verwenden möchten, sollten Sie den Zugriff auf diesen Port auf die IP Ihres Matterbridge-Servers beschränken." +msgid "" +"Then you need to open the C2S port (by default `52822`, but check the plugin " +"settings to get the current value) in your firewall so that it can be " +"reached from the internet. If you don't want to use C2S connections for " +"anything else than your Matterbridge service, you should restrict access to " +"this port to your Matterbridge server IP." +msgstr "" +"Dann müssen Sie den C2S-Port (standardmäßig `52822`, aber überprüfen Sie die " +"Plugin-Einstellungen, um den aktuellen Wert zu erhalten) in Ihrer Firewall " +"öffnen, damit er vom Internet aus erreicht werden kann. Wenn Sie C2S-" +"Verbindungen nur für Ihren Matterbridge-Dienst verwenden möchten, sollten " +"Sie den Zugriff auf diesen Port auf die IP Ihres Matterbridge-Servers " +"beschränken." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "You also need to add DNS records (A and AAAA) for `anon.example.org` and `room.example.org` (replace `example.org` by your actual domain name)." -msgstr "Sie müssen auch DNS-Einträge (A und AAAA) für `anon.example.org` und `room.example.org` hinzufügen (ersetzen Sie `example.org` durch Ihren tatsächlichen Domänennamen)." +msgid "" +"You also need to add DNS records (A and AAAA) for `anon.example.org` and " +"`room.example.org` (replace `example.org` by your actual domain name)." +msgstr "" +"Sie müssen auch DNS-Einträge (A und AAAA) für `anon.example.org` und `room." +"example.org` hinzufügen (ersetzen Sie `example.org` durch Ihren " +"tatsächlichen Domänennamen)." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "In case you are using a port other than `5222` (XMPP standard port) you also need to set the [xmpp-client SRV record](https://prosody.im/doc/dns#srv_records) to the correct port." -msgstr "Falls Sie einen anderen Port als `5222` (XMPP-Standardport) verwenden, müssen Sie auch den [xmpp-client SRV record](https://prosody.im/doc/dns#srv_records) auf den richtigen Port setzen." +msgid "" +"In case you are using a port other than `5222` (XMPP standard port) you also " +"need to set the [xmpp-client SRV record](https://prosody.im/doc/" +"dns#srv_records) to the correct port." +msgstr "" +"Falls Sie einen anderen Port als `5222` (XMPP-Standardport) verwenden, " +"müssen Sie auch den [xmpp-client SRV record](https://prosody.im/doc/" +"dns#srv_records) auf den richtigen Port setzen." #. type: Title ## #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1115,8 +1764,13 @@ msgstr "Matterbridge konfigurieren" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "In the version 1.22.4, Matterbridge added support for XMPP anonymous connections needed to connect to the built-in prosody." -msgstr "In der Version 1.22.4 hat Matterbridge Unterstützung für anonyme XMPP-Verbindungen hinzugefügt, die für die Verbindung mit der eingebauten Prosody benötigt werden." +msgid "" +"In the version 1.22.4, Matterbridge added support for XMPP anonymous " +"connections needed to connect to the built-in prosody." +msgstr "" +"In der Version 1.22.4 hat Matterbridge Unterstützung für anonyme XMPP-" +"Verbindungen hinzugefügt, die für die Verbindung mit der eingebauten Prosody " +"benötigt werden." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1146,12 +1800,15 @@ msgstr "" #. type: Bullet: '- ' #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md msgid "Replace `example.org` by your actual instance domain name." -msgstr "Ersetzen Sie `example.org` durch den Namen Ihrer tatsächlichen Instanzdomäne." +msgstr "" +"Ersetzen Sie `example.org` durch den Namen Ihrer tatsächlichen Instanzdomäne." #. type: Bullet: '- ' #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md msgid "Replace `52822` by the actual port if you changed it." -msgstr "Ersetzen Sie \"52822\" durch den tatsächlichen Port, wenn Sie ihn geändert haben." +msgstr "" +"Ersetzen Sie \"52822\" durch den tatsächlichen Port, wenn Sie ihn geändert " +"haben." #. type: Bullet: '- ' #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md @@ -1160,23 +1817,56 @@ msgstr "`mypeertube` kann durch einen anderen Namen ersetzt werden." #. type: Bullet: '- ' #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "Using `peertube` as the Nick will provide put PeerTube icon for overlay messages, can be also done with overlay config modification." -msgstr "Die Verwendung von `peertube` als Nick stellt ein PeerTube-Symbol für Overlay-Nachrichten zur Verfügung, kann aber auch mit einer Overlay-Konfigurationsänderung durchgeführt werden." +msgid "" +"Using `peertube` as the Nick will provide put PeerTube icon for overlay " +"messages, can be also done with overlay config modification." +msgstr "" +"Die Verwendung von `peertube` als Nick stellt ein PeerTube-Symbol für " +"Overlay-Nachrichten zur Verfügung, kann aber auch mit einer Overlay-" +"Konfigurationsänderung durchgeführt werden." #. type: Bullet: '- ' #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "The setting `NoTLS=true` allows connecting to a server with self-signed certificates." -msgstr "Die Einstellung `NoTLS=true` ermöglicht die Verbindung zu einem Server mit selbstsignierten Zertifikaten." +msgid "" +"The setting `NoTLS=true` allows connecting to a server with self-signed " +"certificates." +msgstr "" +"Die Einstellung `NoTLS=true` ermöglicht die Verbindung zu einem Server mit " +"selbstsignierten Zertifikaten." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "Now you can add this account to gateways and bridge specific live-chat channels." -msgstr "Jetzt können Sie dieses Konto zu Gateways hinzufügen und bestimmte Live-Übertragungskanäle weiterleiten." +msgid "" +"Now you can add this account to gateways and bridge specific live-chat " +"channels." +msgstr "" +"Jetzt können Sie dieses Konto zu Gateways hinzufügen und bestimmte Live-" +"Übertragungskanäle weiterleiten." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/matterbridge.md -msgid "This documentation use an anonymous account to connect the bridge to the chat. But since the livechat v10.1.0, there is a new way to generate long term authentication token, that allows to connect using your account. This is used for [OBS docks](/peertube-plugin-livechat/documentation/user/obs). Using this feature for other purposes is not documented and not officially supported yet. If you want to use it anyway, you can request a token by calling then `/plugins/livechat/router/api/auth/tokens` endpoint. To get needed headers and request body, just check what happens when you generate a new token for OBS docks." -msgstr "In dieser Dokumentation wird ein anonymes Konto verwendet, um die Brücke mit dem Chat zu verbinden. Aber seit dem Livechat v10.1.0 gibt es eine neue Möglichkeit, ein langfristiges Authentifizierungs-Token zu generieren, das es erlaubt, sich mit dem eigenen Konto zu verbinden. Dies wird für [OBS docks](/peertube-plugin-livechat/de/documentation/user/obs) verwendet. Die Verwendung dieser Funktion für andere Zwecke ist nicht dokumentiert und wird noch nicht offiziell unterstützt. Wenn Sie es trotzdem benutzen wollen, können Sie ein Token anfordern, indem Sie den Endpunkt `/plugins/livechat/router/api/auth/tokens` aufrufen. Um die benötigten Header und den Request Body zu erhalten, prüfe einfach, was passiert, wenn du ein neues Token für OBS Docks generierst." +msgid "" +"This documentation use an anonymous account to connect the bridge to the " +"chat. But since the livechat v10.1.0, there is a new way to generate long " +"term authentication token, that allows to connect using your account. This " +"is used for [OBS docks](/peertube-plugin-livechat/documentation/user/obs). " +"Using this feature for other purposes is not documented and not officially " +"supported yet. If you want to use it anyway, you can request a token by " +"calling then `/plugins/livechat/router/api/auth/tokens` endpoint. To get " +"needed headers and request body, just check what happens when you generate a " +"new token for OBS docks." +msgstr "" +"In dieser Dokumentation wird ein anonymes Konto verwendet, um die Brücke mit " +"dem Chat zu verbinden. Aber seit dem Livechat v10.1.0 gibt es eine neue " +"Möglichkeit, ein langfristiges Authentifizierungs-Token zu generieren, das " +"es erlaubt, sich mit dem eigenen Konto zu verbinden. Dies wird für [OBS " +"docks](/peertube-plugin-livechat/de/documentation/user/obs) verwendet. Die " +"Verwendung dieser Funktion für andere Zwecke ist nicht dokumentiert und wird " +"noch nicht offiziell unterstützt. Wenn Sie es trotzdem benutzen wollen, " +"können Sie ein Token anfordern, indem Sie den Endpunkt `/plugins/livechat/" +"router/api/auth/tokens` aufrufen. Um die benötigten Header und den Request " +"Body zu erhalten, prüfe einfach, was passiert, wenn du ein neues Token für " +"OBS Docks generierst." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1192,18 +1882,40 @@ msgstr "XMPP-Clients" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "This chat module is based on the XMPP protocol, also known as Jabber. It is therefore possible to connect to the chats using [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). This can for example be useful to facilitate moderation operations." -msgstr "Dieses Chatmodul basiert auf dem XMPP-Protokoll, das auch als Jabber bekannt ist. Es ist daher möglich, sich mit Hilfe von [XMPP-Client-Software](https://en.wikipedia.org/wiki/XMPP#Clients) mit den Chats zu verbinden. Dies kann zum Beispiel nützlich sein, um Moderationsvorgänge zu erleichtern." +msgid "" +"This chat module is based on the XMPP protocol, also known as Jabber. It is " +"therefore possible to connect to the chats using [XMPP client software]" +"(https://en.wikipedia.org/wiki/XMPP#Clients). This can for example be " +"useful to facilitate moderation operations." +msgstr "" +"Dieses Chatmodul basiert auf dem XMPP-Protokoll, das auch als Jabber bekannt " +"ist. Es ist daher möglich, sich mit Hilfe von [XMPP-Client-Software](https://" +"en.wikipedia.org/wiki/XMPP#Clients) mit den Chats zu verbinden. Dies kann " +"zum Beispiel nützlich sein, um Moderationsvorgänge zu erleichtern." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "For the user documentation associated with these features, please refer to the [user documentation page](/peertube-plugin-livechat/documentation/user/xmpp_clients/)." -msgstr "Die Benutzerdokumentation zu diesen Funktionen finden Sie auf der Seite [Benutzerdokumentation](/peertube-plugin-livechat/de/documentation/user/xmpp_clients/)." +msgid "" +"For the user documentation associated with these features, please refer to " +"the [user documentation page](/peertube-plugin-livechat/documentation/user/" +"xmpp_clients/)." +msgstr "" +"Die Benutzerdokumentation zu diesen Funktionen finden Sie auf der Seite " +"[Benutzerdokumentation](/peertube-plugin-livechat/de/documentation/user/" +"xmpp_clients/)." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Enabling these features requires configuration changes on the server, and on the DNS records. It is not possible to configure this only from the Peertube interface, and it requires some basic system some basic system admin skills." -msgstr "Die Aktivierung dieser Funktionen erfordert Konfigurationsänderungen auf dem Server und in den DNS-Einträgen. Es ist nicht möglich, dies nur über die Peertube-Schnittstelle zu konfigurieren, und es erfordert einige grundlegende Systemadministrationskenntnisse." +msgid "" +"Enabling these features requires configuration changes on the server, and on " +"the DNS records. It is not possible to configure this only from the " +"Peertube interface, and it requires some basic system some basic system " +"admin skills." +msgstr "" +"Die Aktivierung dieser Funktionen erfordert Konfigurationsänderungen auf dem " +"Server und in den DNS-Einträgen. Es ist nicht möglich, dies nur über die " +"Peertube-Schnittstelle zu konfigurieren, und es erfordert einige " +"grundlegende Systemadministrationskenntnisse." #. type: Title ## #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1215,8 +1927,12 @@ msgstr "Melden Sie sich bei Ihrem Peertube-Konto an" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md #: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "This feature is not yet available, and will come in a future version of the plugin." -msgstr "Diese Funktion ist noch nicht verfügbar und wird in einer zukünftigen Version des Plugins enthalten sein." +msgid "" +"This feature is not yet available, and will come in a future version of the " +"plugin." +msgstr "" +"Diese Funktion ist noch nicht verfügbar und wird in einer zukünftigen " +"Version des Plugins enthalten sein." #. type: Title ## #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1227,8 +1943,14 @@ msgstr "Verbindung über ein externes XMPP-Konto" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "To enable this feature, you will need to set up your server and DNS records, so that XMPP clients can find and access the [Prosody server](https://prosody.im) that this plugin uses internally." -msgstr "Um diese Funktion zu aktivieren, müssen Sie Ihren Server und Ihre DNS-Einträge so einrichten, dass XMPP-Clients den [Prosody-Server](https://prosody.im) finden und erreichen können, den dieses Plugin intern verwendet." +msgid "" +"To enable this feature, you will need to set up your server and DNS records, " +"so that XMPP clients can find and access the [Prosody server](https://" +"prosody.im) that this plugin uses internally." +msgstr "" +"Um diese Funktion zu aktivieren, müssen Sie Ihren Server und Ihre DNS-" +"Einträge so einrichten, dass XMPP-Clients den [Prosody-Server](https://" +"prosody.im) finden und erreichen können, den dieses Plugin intern verwendet." #. type: Title ### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1238,23 +1960,60 @@ msgstr "Plugin Einstellungen" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Start by going to the livechat plugin settings of your instance, then enable the setting \"Enable connection to room using external XMPP accounts\". By checking this setting, new settings appear below." -msgstr "Beginne mit den Einstellungen des Livechat-Plugins deiner Instanz und aktiviere die Einstellung \"Verbindung zum Raum über externe XMPP-Konten aktivieren\". Wenn Sie diese Einstellung aktivieren, erscheinen unterhalb neue Einstellungen." +msgid "" +"Start by going to the livechat plugin settings of your instance, then enable " +"the setting \"Enable connection to room using external XMPP accounts\". By " +"checking this setting, new settings appear below." +msgstr "" +"Beginne mit den Einstellungen des Livechat-Plugins deiner Instanz und " +"aktiviere die Einstellung \"Verbindung zum Raum über externe XMPP-Konten " +"aktivieren\". Wenn Sie diese Einstellung aktivieren, erscheinen unterhalb " +"neue Einstellungen." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "First of all, the \"Prosody server to server port\" field. This one defaults to 5269, which is the standard port for this service. You can however change to another port, if this is already in use on your server." -msgstr "Zunächst einmal das Feld \"Prosody-Server-zu-Server-Port\". Dieses Feld ist standardmäßig auf 5269 voreingestellt, dem Standardport für diesen Dienst. Sie können jedoch einen anderen Port wählen, wenn dieser bereits auf Ihrem Server verwendet wird." +msgid "" +"First of all, the \"Prosody server to server port\" field. This one " +"defaults to 5269, which is the standard port for this service. You can " +"however change to another port, if this is already in use on your server." +msgstr "" +"Zunächst einmal das Feld \"Prosody-Server-zu-Server-Port\". Dieses Feld ist " +"standardmäßig auf 5269 voreingestellt, dem Standardport für diesen Dienst. " +"Sie können jedoch einen anderen Port wählen, wenn dieser bereits auf Ihrem " +"Server verwendet wird." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Next, the field \"Server to server network interfaces\" field allows you to specify which network interfaces the server should listen on. The default value \"*, ::\" indicates to listen on all IP addresses. You can change these values, if you wish to listen on only certain IP addresses. The syntax is explained next to the setting." -msgstr "Anschließend können Sie im Feld \"Netzwerkschnittstellen zwischen Server und Server\" angeben, welche Netzwerkschnittstellen der Server abhören soll. Der Standardwert \"*, ::\" bedeutet, dass alle IP-Adressen abgehört werden sollen. Sie können diese Werte ändern, wenn Sie nur bestimmte IP-Adressen abhören möchten. Die Syntax wird neben der Einstellung erklärt." +msgid "" +"Next, the field \"Server to server network interfaces\" field allows you to " +"specify which network interfaces the server should listen on. The default " +"value \"*, ::\" indicates to listen on all IP addresses. You can change " +"these values, if you wish to listen on only certain IP addresses. The " +"syntax is explained next to the setting." +msgstr "" +"Anschließend können Sie im Feld \"Netzwerkschnittstellen zwischen Server und " +"Server\" angeben, welche Netzwerkschnittstellen der Server abhören soll. Der " +"Standardwert \"*, ::\" bedeutet, dass alle IP-Adressen abgehört werden " +"sollen. Sie können diese Werte ändern, wenn Sie nur bestimmte IP-Adressen " +"abhören möchten. Die Syntax wird neben der Einstellung erklärt." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "For the \"Certificate folder\" setting, you can leave it empty. In this case, the plugin will automatically generate self-signed certificates. Some XMPP servers may refuse to connect, depending on their configuration. In this case, you can indicate here a path on the server, in which you must place certificates to be used by the module. It is up to you to generate and renew them. See bellow for more information." -msgstr "Die Einstellung \"Zertifikatsordner\" können Sie leer lassen. In diesem Fall wird das Plugin automatisch selbstsignierte Zertifikate erzeugen. Einige XMPP-Server verweigern je nach ihrer Konfiguration möglicherweise die Verbindung. In diesem Fall können Sie hier einen Pfad auf dem Server angeben, in dem Sie die vom Modul zu verwendenden Zertifikate ablegen müssen. Es liegt an Ihnen, diese zu erzeugen und zu erneuern. Für weitere Informationen siehe unten." +msgid "" +"For the \"Certificate folder\" setting, you can leave it empty. In this " +"case, the plugin will automatically generate self-signed certificates. Some " +"XMPP servers may refuse to connect, depending on their configuration. In " +"this case, you can indicate here a path on the server, in which you must " +"place certificates to be used by the module. It is up to you to generate " +"and renew them. See bellow for more information." +msgstr "" +"Die Einstellung \"Zertifikatsordner\" können Sie leer lassen. In diesem Fall " +"wird das Plugin automatisch selbstsignierte Zertifikate erzeugen. Einige " +"XMPP-Server verweigern je nach ihrer Konfiguration möglicherweise die " +"Verbindung. In diesem Fall können Sie hier einen Pfad auf dem Server " +"angeben, in dem Sie die vom Modul zu verwendenden Zertifikate ablegen " +"müssen. Es liegt an Ihnen, diese zu erzeugen und zu erneuern. Für weitere " +"Informationen siehe unten." #. type: Title ### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1265,12 +2024,20 @@ msgstr "Firewall" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "You must open the configured port (5269 by default) on your firewall." -msgstr "Sie müssen den konfigurierten Port (standardmäßig 5269) in Ihrer Firewall öffnen." +msgstr "" +"Sie müssen den konfigurierten Port (standardmäßig 5269) in Ihrer Firewall " +"öffnen." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "If you are using Docker for your Peertube, you need to modify the `docker-compose.yml` file to open port 5269 of the `peertube` container, so that the outer world can connect to it." -msgstr "Wenn Sie Docker für Ihren Peertube verwenden, müssen Sie die Datei `docker-compose.yml` ändern, um Port 5269 des `Peertube`-Containers zu öffnen, damit sich die Außenwelt mit ihm verbinden kann." +msgid "" +"If you are using Docker for your Peertube, you need to modify the `docker-" +"compose.yml` file to open port 5269 of the `peertube` container, so that the " +"outer world can connect to it." +msgstr "" +"Wenn Sie Docker für Ihren Peertube verwenden, müssen Sie die Datei `docker-" +"compose.yml` ändern, um Port 5269 des `Peertube`-Containers zu öffnen, damit " +"sich die Außenwelt mit ihm verbinden kann." #. type: Title ### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1280,18 +2047,32 @@ msgstr "DNS" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "You need to add [DNS records](https://prosody.im/doc/dns) allowing remote servers to find \"room.your_instance.tld\" and \"external.your_instance.tld\" components." -msgstr "Sie müssen [DNS-Einträge](https://prosody.im/doc/dns) hinzufügen, die es entfernten Servern ermöglicht, die Komponenten \"room.your_instance.tld\" und \"external.your_instance.tld\" zu finden." +msgid "" +"You need to add [DNS records](https://prosody.im/doc/dns) allowing remote " +"servers to find \"room.your_instance.tld\" and \"external.your_instance." +"tld\" components." +msgstr "" +"Sie müssen [DNS-Einträge](https://prosody.im/doc/dns) hinzufügen, die es " +"entfernten Servern ermöglicht, die Komponenten \"room.your_instance.tld\" " +"und \"external.your_instance.tld\" zu finden." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "The easiest way to do this is to add SRV records for the \"room\" and \"external\" [subdomain](https://prosody.im/doc/dns#subdomains):" -msgstr "Am einfachsten ist es, SRV-Einträge für die [Subdomänen](https://prosody.im/doc/dns#subdomains) \"room\" und \"external\" hinzuzufügen:" +msgid "" +"The easiest way to do this is to add SRV records for the \"room\" and " +"\"external\" [subdomain](https://prosody.im/doc/dns#subdomains):" +msgstr "" +"Am einfachsten ist es, SRV-Einträge für die [Subdomänen](https://prosody.im/" +"doc/dns#subdomains) \"room\" und \"external\" hinzuzufügen:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "record name: _xmpp-server._tcp.room.your_instance.tld. (replace «your_instance.tld» by your instance uri)" -msgstr "record name: _xmpp-server._tcp.room.ihre_instanz.tld. (ersetzen Sie «ihre_instanz.tld» mit ihrer Instanz Uri)" +msgid "" +"record name: _xmpp-server._tcp.room.your_instance.tld. (replace " +"«your_instance.tld» by your instance uri)" +msgstr "" +"record name: _xmpp-server._tcp.room.ihre_instanz.tld. (ersetzen Sie " +"«ihre_instanz.tld» mit ihrer Instanz Uri)" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1330,18 +2111,27 @@ msgstr "Ziel: ihre_instanz.tld. (durch Ihre Instanz-URI ersetzen)" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "record name: _xmpp-server._tcp.external.your_instance.tld. (replace «your_instance.tld» by your instance uri)" -msgstr "record name: _xmpp-server._tcp.external.ihre_instanz.tld. (ersetzen Sie «ihre_instanz.tld» mit ihrer Instanz Uri)" +msgid "" +"record name: _xmpp-server._tcp.external.your_instance.tld. (replace " +"«your_instance.tld» by your instance uri)" +msgstr "" +"record name: _xmpp-server._tcp.external.ihre_instanz.tld. (ersetzen Sie " +"«ihre_instanz.tld» mit ihrer Instanz Uri)" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Be careful to keep the dot after \"your_instance.tld\"." -msgstr "Achten Sie darauf, dass der Punkt nach \"ihre_instanz.tld\" erhalten bleibt." +msgstr "" +"Achten Sie darauf, dass der Punkt nach \"ihre_instanz.tld\" erhalten bleibt." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Using the `dig` command to check your records, you should get a result similar to this:" -msgstr "Wenn Sie den Befehl `dig` verwenden, um Ihren Datensätze zu überprüfen, sollten Sie ein ähnliches Ergebnis wie dieses erhalten:" +msgid "" +"Using the `dig` command to check your records, you should get a result " +"similar to this:" +msgstr "" +"Wenn Sie den Befehl `dig` verwenden, um Ihren Datensätze zu überprüfen, " +"sollten Sie ein ähnliches Ergebnis wie dieses erhalten:" #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1361,8 +2151,17 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "If you are **not using the standard `5269` port**, you must also add a SRV record for `_xmpp-server._tcp.your_instance.tld.` (same as above, just without the `room.` prefix). Of course, you can also add this record if you use the standard port. It will also work." -msgstr "Wenn Sie **nicht den Standardport `5269` verwenden**, müssen Sie auch einen SRV-Eintrag für `_xmpp-server._tcp.ihre_instanz.tld.` hinzufügen (wie oben, nur ohne das Präfix `room.`). Natürlich können Sie diesen Eintrag auch hinzufügen, wenn Sie den Standard-Port verwenden. Das wird auch funktionieren." +msgid "" +"If you are **not using the standard `5269` port**, you must also add a SRV " +"record for `_xmpp-server._tcp.your_instance.tld.` (same as above, just " +"without the `room.` prefix). Of course, you can also add this record if you " +"use the standard port. It will also work." +msgstr "" +"Wenn Sie **nicht den Standardport `5269` verwenden**, müssen Sie auch einen " +"SRV-Eintrag für `_xmpp-server._tcp.ihre_instanz.tld.` hinzufügen (wie oben, " +"nur ohne das Präfix `room.`). Natürlich können Sie diesen Eintrag auch " +"hinzufügen, wenn Sie den Standard-Port verwenden. Das wird auch " +"funktionieren." #. type: Title ### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1372,13 +2171,35 @@ msgstr "Verwendung vertrauenswürdiger Zertifikate" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "The self-signed certificates that this plugin uses by default can be rejected by some XMPP servers, for security reasons." -msgstr "Die selbstsignierten Zertifikate, die dieses Plugin standardmäßig verwendet, können von einigen XMPP-Servern aus Sicherheitsgründen abgelehnt werden." +msgid "" +"The self-signed certificates that this plugin uses by default can be " +"rejected by some XMPP servers, for security reasons." +msgstr "" +"Die selbstsignierten Zertifikate, die dieses Plugin standardmäßig verwendet, " +"können von einigen XMPP-Servern aus Sicherheitsgründen abgelehnt werden." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "It is possible to use certificates validated by a certification authority. However, this requires advanced system administration knowledge. Indeed, due to the multitude of possible use cases, it is impossible to document all situations here. This documentation will therefore only explain the goal to be reached, and give an example which will only be suitable for a \"basic\" situation (manual installation of Peertube, using letsencrypt). If you are in another situation (Docker installation, certificates signed by another authority, etc...), you will have to adapt this approach by yourself." -msgstr "Es ist möglich, von einer Zertifizierungsstelle validierte Zertifikate zu verwenden. Dies erfordert jedoch fortgeschrittene Kenntnisse in der Systemverwaltung. Aufgrund der Vielzahl möglicher Anwendungsfälle ist es in der Tat unmöglich, hier alle Situationen zu dokumentieren. Diese Dokumentation wird daher nur das zu erreichende Ziel erläutern und ein Beispiel geben, das nur für eine \"einfache\" Situation geeignet ist (manuelle Installation von Peertube unter Verwendung von letsencrypt). Wenn Sie sich in einer anderen Situation befinden (Docker-Installation, von einer anderen Autorität signierte Zertifikate, etc...), müssen Sie diesen Ansatz selbst anpassen." +msgid "" +"It is possible to use certificates validated by a certification authority. " +"However, this requires advanced system administration knowledge. Indeed, " +"due to the multitude of possible use cases, it is impossible to document all " +"situations here. This documentation will therefore only explain the goal to " +"be reached, and give an example which will only be suitable for a \"basic\" " +"situation (manual installation of Peertube, using letsencrypt). If you are " +"in another situation (Docker installation, certificates signed by another " +"authority, etc...), you will have to adapt this approach by yourself." +msgstr "" +"Es ist möglich, von einer Zertifizierungsstelle validierte Zertifikate zu " +"verwenden. Dies erfordert jedoch fortgeschrittene Kenntnisse in der " +"Systemverwaltung. Aufgrund der Vielzahl möglicher Anwendungsfälle ist es in " +"der Tat unmöglich, hier alle Situationen zu dokumentieren. Diese " +"Dokumentation wird daher nur das zu erreichende Ziel erläutern und ein " +"Beispiel geben, das nur für eine \"einfache\" Situation geeignet ist " +"(manuelle Installation von Peertube unter Verwendung von letsencrypt). Wenn " +"Sie sich in einer anderen Situation befinden (Docker-Installation, von einer " +"anderen Autorität signierte Zertifikate, etc...), müssen Sie diesen Ansatz " +"selbst anpassen." #. type: Title #### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1388,23 +2209,54 @@ msgstr "Grundlegendes Prinzip" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "It is up to you to generate valid certificates for domains `your_instance.tld` and `room.your_instance.tld`. You can use any [method supported by Prosody](https://prosody.im/doc/certificates)." -msgstr "Es liegt an Ihnen, gültige Zertifikate für die Domänen `ihre_instanz.tld` und `room.ihre_instanz.tld` zu erzeugen. Sie können jede [von Prosody unterstützte Methode](https://prosody.im/doc/certificates) verwenden." +msgid "" +"It is up to you to generate valid certificates for domains `your_instance." +"tld` and `room.your_instance.tld`. You can use any [method supported by " +"Prosody](https://prosody.im/doc/certificates)." +msgstr "" +"Es liegt an Ihnen, gültige Zertifikate für die Domänen `ihre_instanz.tld` " +"und `room.ihre_instanz.tld` zu erzeugen. Sie können jede [von Prosody " +"unterstützte Methode](https://prosody.im/doc/certificates) verwenden." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "You must then place these certificates in a folder that will be accessible to the `peertube` user, and specify this folder in the plugin setting \"Certificate folder\"." -msgstr "Sie müssen diese Zertifikate dann in einem Ordner ablegen, auf den der `peertube`-Benutzer zugreifen kann, und diesen Ordner in der Plugin Einstellung \"Certificate folder\" angeben." +msgid "" +"You must then place these certificates in a folder that will be accessible " +"to the `peertube` user, and specify this folder in the plugin setting " +"\"Certificate folder\"." +msgstr "" +"Sie müssen diese Zertifikate dann in einem Ordner ablegen, auf den der " +"`peertube`-Benutzer zugreifen kann, und diesen Ordner in der Plugin " +"Einstellung \"Certificate folder\" angeben." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "If you want to use the ProsodyCtl utility to import certificates, this utility is available (once Peertube is started) using the following command (adapting the path to your Peertube data folder, and replacing \"xxx\" with the arguments you wish to pass to prosodyctl): `sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl --config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua xxx`" -msgstr "Wenn Sie das Programm ProsodyCtl verwenden möchten, um Zertifikate zu importieren, ist es (sobald Peertube gestartet ist) mit folgendem Befehl verfügbar (passen Sie den Pfad zu Ihrem Peertube-Datenordner an und ersetzen Sie \"xxx\" durch die Argumente, die Sie an prosodyctl übergeben wollen): `sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl --config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua xxx`" +msgid "" +"If you want to use the ProsodyCtl utility to import certificates, this " +"utility is available (once Peertube is started) using the following command " +"(adapting the path to your Peertube data folder, and replacing \"xxx\" with " +"the arguments you wish to pass to prosodyctl): `sudo -u peertube /var/www/" +"peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/" +"squashfs-root/AppRun prosodyctl --config /var/www/peertube/storage/plugins/" +"data/peertube-plugin-livechat/prosody/prosody.cfg.lua xxx`" +msgstr "" +"Wenn Sie das Programm ProsodyCtl verwenden möchten, um Zertifikate zu " +"importieren, ist es (sobald Peertube gestartet ist) mit folgendem Befehl " +"verfügbar (passen Sie den Pfad zu Ihrem Peertube-Datenordner an und ersetzen " +"Sie \"xxx\" durch die Argumente, die Sie an prosodyctl übergeben wollen): " +"`sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-" +"livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl --config /var/www/" +"peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg." +"lua xxx`" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "The plugin will check once a day to see if any files have been modified in this folder, and reload Prosody if necessary." -msgstr "Das Plugin prüft einmal am Tag, ob Dateien in diesem Ordner geändert wurden, und lädt Prosody gegebenenfalls neu." +msgid "" +"The plugin will check once a day to see if any files have been modified in " +"this folder, and reload Prosody if necessary." +msgstr "" +"Das Plugin prüft einmal am Tag, ob Dateien in diesem Ordner geändert wurden, " +"und lädt Prosody gegebenenfalls neu." #. type: Title #### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1414,23 +2266,49 @@ msgstr "Methode für den einfachen Fall" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "We assume here that your Peertube installation is \"classic\" (no use of Docker), and that the certificates are generated by letsencrypt, using the certbot tool." -msgstr "Wir gehen hier davon aus, dass Ihre Peertube Installation \"klassisch\" ist (keine Verwendung von Docker) und dass die Zertifikate von letsencrypt mit dem Werkzeug certbot erzeugt werden." +msgid "" +"We assume here that your Peertube installation is \"classic\" (no use of " +"Docker), and that the certificates are generated by letsencrypt, using the " +"certbot tool." +msgstr "" +"Wir gehen hier davon aus, dass Ihre Peertube Installation \"klassisch\" ist " +"(keine Verwendung von Docker) und dass die Zertifikate von letsencrypt mit " +"dem Werkzeug certbot erzeugt werden." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "First of all, we'll have to create a certificate for the subdomain `room.your_instance.tld` : this is the uri of the MUC (XMPP chat rooms) component. Even if the connections are made on `your_instance.tld`, we will need a valid certificate for this subdomain." -msgstr "Als erstes müssen wir ein Zertifikat für die Subdomain `room.ihre_instanz.tld` erstellen: dies ist die Uri der MUC (XMPP chat rooms) Komponente. Auch wenn die Verbindungen über `ihre_instanz.tld` hergestellt werden, benötigen wir ein gültiges Zertifikat für diese Subdomain." +msgid "" +"First of all, we'll have to create a certificate for the subdomain `room." +"your_instance.tld` : this is the uri of the MUC (XMPP chat rooms) " +"component. Even if the connections are made on `your_instance.tld`, we will " +"need a valid certificate for this subdomain." +msgstr "" +"Als erstes müssen wir ein Zertifikat für die Subdomain `room.ihre_instanz." +"tld` erstellen: dies ist die Uri der MUC (XMPP chat rooms) Komponente. Auch " +"wenn die Verbindungen über `ihre_instanz.tld` hergestellt werden, benötigen " +"wir ein gültiges Zertifikat für diese Subdomain." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "So start by setting up a DNS entry for `room.your_instance.tld`, which points to your server. You can use a CNAME entry (or an A entry and a AAAA entry)." -msgstr "Beginnen Sie also damit, einen DNS-Eintrag für `room.ihre_instanz.tld` einzurichten, der auf Ihren Server verweist. Sie können einen CNAME-Eintrag verwenden (oder einen A-Eintrag und einen AAAA-Eintrag)." +msgid "" +"So start by setting up a DNS entry for `room.your_instance.tld`, which " +"points to your server. You can use a CNAME entry (or an A entry and a AAAA " +"entry)." +msgstr "" +"Beginnen Sie also damit, einen DNS-Eintrag für `room.ihre_instanz.tld` " +"einzurichten, der auf Ihren Server verweist. Sie können einen CNAME-Eintrag " +"verwenden (oder einen A-Eintrag und einen AAAA-Eintrag)." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Next, we'll use nginx (already installed for your Peertube) to generate the certbot certificate. We will create a new site. In the file `/etc/nginx/site-available/room.peertube`, add:" -msgstr "Als Nächstes verwenden wir nginx (bereits für Ihr Peertube installiert), um das certbot-Zertifikat zu erzeugen. Wir werden eine neue Website erstellen. In der Datei `/etc/nginx/site-available/room.peertube` fügen Sie hinzu:" +msgid "" +"Next, we'll use nginx (already installed for your Peertube) to generate the " +"certbot certificate. We will create a new site. In the file `/etc/nginx/" +"site-available/room.peertube`, add:" +msgstr "" +"Als Nächstes verwenden wir nginx (bereits für Ihr Peertube installiert), um " +"das certbot-Zertifikat zu erzeugen. Wir werden eine neue Website erstellen. " +"In der Datei `/etc/nginx/site-available/room.peertube` fügen Sie hinzu:" #. type: Fenced code block (nginx) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1475,8 +2353,17 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Then we prepare the folder in which we will later import the certificates. We assume here that you already have the plugin active. We will create the following folder (if it doesn't already exist), with the user `peertube` to make sure there are no permissions issues:" -msgstr "Dann bereiten wir den Ordner vor, in den wir später die Zertifikate importieren werden. Wir gehen hier davon aus, dass Sie das Plugin bereits aktiv haben. Wir erstellen den folgenden Ordner (falls er noch nicht existiert), mit dem Benutzer `peertube`, um sicherzustellen, dass es keine Probleme mit den Berechtigungen gibt:" +msgid "" +"Then we prepare the folder in which we will later import the certificates. " +"We assume here that you already have the plugin active. We will create the " +"following folder (if it doesn't already exist), with the user `peertube` to " +"make sure there are no permissions issues:" +msgstr "" +"Dann bereiten wir den Ordner vor, in den wir später die Zertifikate " +"importieren werden. Wir gehen hier davon aus, dass Sie das Plugin bereits " +"aktiv haben. Wir erstellen den folgenden Ordner (falls er noch nicht " +"existiert), mit dem Benutzer `peertube`, um sicherzustellen, dass es keine " +"Probleme mit den Berechtigungen gibt:" #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1486,23 +2373,43 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Now you have to configure this folder in the plugin settings, for the parameter \"Certificate folders\". It's important to do this now, otherwise the certificate import script will put the certificates in the wrong folder." -msgstr "Nun müssen Sie diesen Ordner in den Plugin-Einstellungen für den Parameter \"Zertifikatsordner\" konfigurieren. Es ist wichtig, dies jetzt zu tun, da sonst das Skript für den Zertifikatsimport die Zertifikate in den falschen Ordner legt." +msgid "" +"Now you have to configure this folder in the plugin settings, for the " +"parameter \"Certificate folders\". It's important to do this now, otherwise " +"the certificate import script will put the certificates in the wrong folder." +msgstr "" +"Nun müssen Sie diesen Ordner in den Plugin-Einstellungen für den Parameter " +"\"Zertifikatsordner\" konfigurieren. Es ist wichtig, dies jetzt zu tun, da " +"sonst das Skript für den Zertifikatsimport die Zertifikate in den falschen " +"Ordner legt." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "We will configure certbot to import the generated certificates into the Prosody folder. We can use the ProsodyCtl utility packaged in the plugin." -msgstr "Wir werden certbot so konfigurieren, dass die generierten Zertifikate in den Prosody Ordner importiert werden. Wir können das Programm ProsodyCtl verwenden, das im Plugin enthalten ist." +msgid "" +"We will configure certbot to import the generated certificates into the " +"Prosody folder. We can use the ProsodyCtl utility packaged in the plugin." +msgstr "" +"Wir werden certbot so konfigurieren, dass die generierten Zertifikate in den " +"Prosody Ordner importiert werden. Wir können das Programm ProsodyCtl " +"verwenden, das im Plugin enthalten ist." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Note: for it to be available, the plugin must have been started at least once." -msgstr "Hinweis: Damit es verfügbar ist, muss das Plugin mindestens einmal gestartet worden sein." +msgid "" +"Note: for it to be available, the plugin must have been started at least " +"once." +msgstr "" +"Hinweis: Damit es verfügbar ist, muss das Plugin mindestens einmal gestartet " +"worden sein." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "We will create a file `/etc/letsencrypt/renewal-hooks/deploy/prosody.sh` containing:" -msgstr "Wir werden eine Datei `/etc/letsencrypt/renewal-hooks/deploy/prosody.sh` erstellen, die Folgendes enthält:" +msgid "" +"We will create a file `/etc/letsencrypt/renewal-hooks/deploy/prosody.sh` " +"containing:" +msgstr "" +"Wir werden eine Datei `/etc/letsencrypt/renewal-hooks/deploy/prosody.sh` " +"erstellen, die Folgendes enthält:" #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1535,18 +2442,28 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "If certbot offers you several methods to generate the certificate, choose \"nginx\"." -msgstr "Wenn certbot Ihnen mehrere Methoden zur Erstellung des Zertifikats anbietet, wählen Sie \"nginx\"." +msgid "" +"If certbot offers you several methods to generate the certificate, choose " +"\"nginx\"." +msgstr "" +"Wenn certbot Ihnen mehrere Methoden zur Erstellung des Zertifikats anbietet, " +"wählen Sie \"nginx\"." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Normally you should now find the certificates in the configured folder." -msgstr "Normalerweise sollten Sie die Zertifikate nun in dem konfigurierten Ordner finden." +msgstr "" +"Normalerweise sollten Sie die Zertifikate nun in dem konfigurierten Ordner " +"finden." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Note: the first time you do this, you will have to reload Prosody. The easiest way to do this is to restart Peertube." -msgstr "Hinweis: Wenn Sie dies zum ersten Mal tun, müssen Sie Prosody neu laden. Der einfachste Weg, dies zu tun, ist, Peertube neu zu starten." +msgid "" +"Note: the first time you do this, you will have to reload Prosody. The " +"easiest way to do this is to restart Peertube." +msgstr "" +"Hinweis: Wenn Sie dies zum ersten Mal tun, müssen Sie Prosody neu laden. Der " +"einfachste Weg, dies zu tun, ist, Peertube neu zu starten." #. type: Title #### #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1556,18 +2473,33 @@ msgstr "Methode für das Docker-Verfahren" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "This method works with the officially supported [Docker guide](https://docs.joinpeertube.org/install/docker) from PeerTube." -msgstr "Diese Methode funktioniert mit dem offiziell unterstützten [Docker Guide](https://docs.joinpeertube.org/install/docker) von PeerTube." +msgid "" +"This method works with the officially supported [Docker guide](https://docs." +"joinpeertube.org/install/docker) from PeerTube." +msgstr "" +"Diese Methode funktioniert mit dem offiziell unterstützten [Docker Guide]" +"(https://docs.joinpeertube.org/install/docker) von PeerTube." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "First, ensure you create a DNS entry for `room.your_instance.tld`, which points to your server. You can use a CNAME entry (or an A entry and a AAAA entry). This is necessary for Let's Encrypt to validate the domain for certificate generation." -msgstr "Stellen Sie zunächst sicher, dass Sie einen DNS-Eintrag für \"room.ihre_instanz.tld\" erstellen, der auf Ihren Server verweist. Sie können einen CNAME-Eintrag (oder einen A-Eintrag und einen AAAA-Eintrag) verwenden. Dies ist erforderlich, damit Let's Encrypt die Domäne für die Zertifikatserstellung validieren kann." +msgid "" +"First, ensure you create a DNS entry for `room.your_instance.tld`, which " +"points to your server. You can use a CNAME entry (or an A entry and a AAAA " +"entry). This is necessary for Let's Encrypt to validate the domain for " +"certificate generation." +msgstr "" +"Stellen Sie zunächst sicher, dass Sie einen DNS-Eintrag für \"room." +"ihre_instanz.tld\" erstellen, der auf Ihren Server verweist. Sie können " +"einen CNAME-Eintrag (oder einen A-Eintrag und einen AAAA-Eintrag) verwenden. " +"Dies ist erforderlich, damit Let's Encrypt die Domäne für die " +"Zertifikatserstellung validieren kann." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Enter the directory where your `docker-compose.yml` file exists." -msgstr "Geben Sie das Verzeichnis an, in dem sich Ihre Datei `docker-compose.yml` befindet." +msgstr "" +"Geben Sie das Verzeichnis an, in dem sich Ihre Datei `docker-compose.yml` " +"befindet." #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1593,8 +2525,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "You will be presented with a series of prompts. Enter `2` for the authentication type:" -msgstr "Es wird eine Reihe von Eingabeaufforderungen angezeigt. Geben Sie `2` für den Authentifizierungstyp ein:" +msgid "" +"You will be presented with a series of prompts. Enter `2` for the " +"authentication type:" +msgstr "" +"Es wird eine Reihe von Eingabeaufforderungen angezeigt. Geben Sie `2` für " +"den Authentifizierungstyp ein:" #. type: Fenced code block (text) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1617,8 +2553,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Enter the directory where the PeerTube webserver serves requests for Let's Encrypt, `/var/www/certbot`:" -msgstr "Geben Sie das Verzeichnis an, in dem der PeerTube-Webserver Anfragen für Let's Encrypt bedient, `/var/www/certbot`:" +msgid "" +"Enter the directory where the PeerTube webserver serves requests for Let's " +"Encrypt, `/var/www/certbot`:" +msgstr "" +"Geben Sie das Verzeichnis an, in dem der PeerTube-Webserver Anfragen für " +"Let's Encrypt bedient, `/var/www/certbot`:" #. type: Fenced code block (text) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1642,8 +2582,18 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Run the below command inside the certbot container to give read access to the new certs and private keys to the peertube group. *Note*: This will also make the files readable to the group with id 999 on the host system. Check the groups on your system to assess this as a risk before running this command." -msgstr "Führen Sie den folgenden Befehl innerhalb des certbot-Containers aus, um der peertube-Gruppe Lesezugriff auf die neuen Zertifikate und privaten Schlüssel zu geben. *Hinweis*: Dadurch werden die Dateien auch für die Gruppe mit der ID 999 auf dem Host-System lesbar. Überprüfen Sie die Gruppen auf Ihrem System, um dieses Risiko einzuschätzen, bevor Sie diesen Befehl ausführen." +msgid "" +"Run the below command inside the certbot container to give read access to " +"the new certs and private keys to the peertube group. *Note*: This will " +"also make the files readable to the group with id 999 on the host system. " +"Check the groups on your system to assess this as a risk before running this " +"command." +msgstr "" +"Führen Sie den folgenden Befehl innerhalb des certbot-Containers aus, um der " +"peertube-Gruppe Lesezugriff auf die neuen Zertifikate und privaten Schlüssel " +"zu geben. *Hinweis*: Dadurch werden die Dateien auch für die Gruppe mit der " +"ID 999 auf dem Host-System lesbar. Überprüfen Sie die Gruppen auf Ihrem " +"System, um dieses Risiko einzuschätzen, bevor Sie diesen Befehl ausführen." #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1669,8 +2619,14 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Modify your `docker-compose.yml` file, changing the `entrypoint` line under the `certbot` service to the following. This is the same as the above, but to be automatically executed after every certificate renewal." -msgstr "Ändern Sie Ihre Datei `docker-compose.yml`, indem Sie die Zeile `entrypoint` unter dem Dienst `certbot` wie folgt ändern. Dies ist das Gleiche wie oben, soll aber automatisch nach jeder Zertifikatserneuerung ausgeführt werden." +msgid "" +"Modify your `docker-compose.yml` file, changing the `entrypoint` line under " +"the `certbot` service to the following. This is the same as the above, but " +"to be automatically executed after every certificate renewal." +msgstr "" +"Ändern Sie Ihre Datei `docker-compose.yml`, indem Sie die Zeile `entrypoint` " +"unter dem Dienst `certbot` wie folgt ändern. Dies ist das Gleiche wie oben, " +"soll aber automatisch nach jeder Zertifikatserneuerung ausgeführt werden." #. type: Fenced code block (text) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1680,8 +2636,13 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "Continuing to modify `docker-compose.yml`, add the certbot certificate volume into the peertube container. It should look something like this:" -msgstr "Fahren Sie mit der Änderung der Datei `docker-compose.yml` fort und fügen Sie das certbot-Zertifikatsvolumen in den Peertube-Container ein. Es sollte in etwa so aussehen:" +msgid "" +"Continuing to modify `docker-compose.yml`, add the certbot certificate " +"volume into the peertube container. It should look something like this:" +msgstr "" +"Fahren Sie mit der Änderung der Datei `docker-compose.yml` fort und fügen " +"Sie das certbot-Zertifikatsvolumen in den Peertube-Container ein. Es sollte " +"in etwa so aussehen:" #. type: Fenced code block (text) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1704,8 +2665,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "In the livechat plugin settings from your PeerTube administration settings, set the certificate directory to the following:" -msgstr "Setzen Sie in den Livechat-Plugin-Einstellungen in den PeerTube-Administrationseinstellungen den Zertifikatsordner auf den folgenden Wert:" +msgid "" +"In the livechat plugin settings from your PeerTube administration settings, " +"set the certificate directory to the following:" +msgstr "" +"Setzen Sie in den Livechat-Plugin-Einstellungen in den PeerTube-" +"Administrationseinstellungen den Zertifikatsordner auf den folgenden Wert:" #. type: Fenced code block (text) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1716,7 +2681,9 @@ msgstr "/etc/letsencrypt/live\n" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md msgid "Save the plugin settings and verify Prosody can see the certificates:" -msgstr "Speichern Sie die Plugin Einstellungen und überprüfen Sie, ob Prosody die Zertifikate erkennen kann:" +msgstr "" +"Speichern Sie die Plugin Einstellungen und überprüfen Sie, ob Prosody die " +"Zertifikate erkennen kann:" #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md @@ -1740,8 +2707,14 @@ msgstr "Fehlerbehebung" #. type: Plain text #: support/documentation/content/en/documentation/admin/advanced/xmpp_clients.md -msgid "If you can't make it work, you can use the diagnostic tool (there is a button on top of the plugin settings page), and take a close look on the «Prosody check» section." -msgstr "Wenn Sie es nicht hinbekommen, können Sie das Diagnosetool verwenden (es gibt eine Schaltfläche oben auf der Seite mit den Plugin-Einstellungen) und sich den Abschnitt «Prosody check» genau ansehen." +msgid "" +"If you can't make it work, you can use the diagnostic tool (there is a " +"button on top of the plugin settings page), and take a close look on the " +"«Prosody check» section." +msgstr "" +"Wenn Sie es nicht hinbekommen, können Sie das Diagnosetool verwenden (es " +"gibt eine Schaltfläche oben auf der Seite mit den Plugin-Einstellungen) und " +"sich den Abschnitt «Prosody check» genau ansehen." #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/admin/external_auth.md @@ -1758,55 +2731,91 @@ msgstr "Externe Authentifizierung" #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "Users that are not connected to your Peertube instance are joining the chat using \"anonymous accounts\" (they can freely choose a nickname, and will be assigned a random avatar)." -msgstr "Benutzer, die nicht mit Ihrer Peertube-Instanz verbunden sind, treten dem Chat mit \"anonymen Konten\" bei (sie können einen Spitznamen frei wählen und bekommen einen zufälligen Avatar zugewiesen)." +msgid "" +"Users that are not connected to your Peertube instance are joining the chat " +"using \"anonymous accounts\" (they can freely choose a nickname, and will be " +"assigned a random avatar)." +msgstr "" +"Benutzer, die nicht mit Ihrer Peertube-Instanz verbunden sind, treten dem " +"Chat mit \"anonymen Konten\" bei (sie können einen Spitznamen frei wählen " +"und bekommen einen zufälligen Avatar zugewiesen)." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "You can enable some external authentication methods to allow user to create chat accounts. In such case their nickname and avatar will be automatically initialized with the remote account information." -msgstr "Sie können einige externe Authentifizierungsmethoden aktivieren, damit die Benutzer Chat-Konten erstellen können. In diesem Fall werden ihr Nickname und Avatar automatisch mit den Informationen des entfernten Kontos initialisiert." +msgid "" +"You can enable some external authentication methods to allow user to create " +"chat accounts. In such case their nickname and avatar will be automatically " +"initialized with the remote account information." +msgstr "" +"Sie können einige externe Authentifizierungsmethoden aktivieren, damit die " +"Benutzer Chat-Konten erstellen können. In diesem Fall werden ihr Nickname " +"und Avatar automatisch mit den Informationen des entfernten Kontos " +"initialisiert." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "Such \"external account users\" will be easier to moderate than anonymous accounts." -msgstr "Solche \"Nutzer mit externen Konten\" sind leichter zu moderieren als anonyme Konten." +msgid "" +"Such \"external account users\" will be easier to moderate than anonymous " +"accounts." +msgstr "" +"Solche \"Nutzer mit externen Konten\" sind leichter zu moderieren als " +"anonyme Konten." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "This also allows user to join the chat without creating Peertube account (in case your instance has closed registration for example, or without waiting for account approval)." -msgstr "Dies ermöglicht es den Nutzern auch, dem Chat beizutreten, ohne ein Peertube-Konto zu erstellen (z. B. wenn Ihre Instanz die Registrierung geschlossen hat, oder ohne auf die Genehmigung des Kontos zu warten)." +msgid "" +"This also allows user to join the chat without creating Peertube account (in " +"case your instance has closed registration for example, or without waiting " +"for account approval)." +msgstr "" +"Dies ermöglicht es den Nutzern auch, dem Chat beizutreten, ohne ein Peertube-" +"Konto zu erstellen (z. B. wenn Ihre Instanz die Registrierung geschlossen " +"hat, oder ohne auf die Genehmigung des Kontos zu warten)." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md #: support/documentation/content/en/documentation/user/viewers.md -msgid "![Screenshot of a Peertube video page, with a chat on the right. At the bottom of the chat, there is a \"{{% livechat_label login_using_external_account %}}\" button.](/peertube-plugin-livechat/images/external_login_button.png?classes=shadow,border&height=200px \"{{% livechat_label login_using_external_account %}} button\")" +msgid "" +"![Screenshot of a Peertube video page, with a chat on the right. At the " +"bottom of the chat, there is a \"{{% livechat_label " +"login_using_external_account %}}\" button.](/peertube-plugin-livechat/images/" +"external_login_button.png?classes=shadow,border&height=200px \"{{% " +"livechat_label login_using_external_account %}} button\")" msgstr "" "![Screenshot einer Peertube-Videoseite, mit einem Chat auf der rechten " "Seite. Am unteren Ende des Chats befindet sich die Schaltfläche \"{{% " -"livechat_label login_using_external_account %}}\".](/peertube-" -"plugin-livechat/images/" -"external_login_button.png?classes=shadow,border&height=200px \"{{% " -"livechat_label login_using_external_account %}} button\")" +"livechat_label login_using_external_account %}}\".](/peertube-plugin-" +"livechat/images/external_login_button.png?classes=shadow,border&height=200px " +"\"{{% livechat_label login_using_external_account %}} button\")" #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md #: support/documentation/content/en/documentation/user/viewers.md -msgid "![Screenshot of a dialog with an \"OpenID Connect\" button.](/peertube-plugin-livechat/images/external_login_dialog_oidc.png?classes=shadow,border&height=200px \"External login dialog - OpenID Connect\")" +msgid "" +"![Screenshot of a dialog with an \"OpenID Connect\" button.](/peertube-" +"plugin-livechat/images/external_login_dialog_oidc.png?classes=shadow," +"border&height=200px \"External login dialog - OpenID Connect\")" msgstr "" -"![Screenshot eines Dialogs mit einer Schaltfläche \"OpenID Connect\"" -".](/peertube-plugin-livechat/images/" -"external_login_dialog_oidc.png?classes=shadow,border&height=200px \"Externer " -"Anmeldedialog - OpenID Connect\")" +"![Screenshot eines Dialogs mit einer Schaltfläche \"OpenID Connect\".](/" +"peertube-plugin-livechat/images/external_login_dialog_oidc.png?" +"classes=shadow,border&height=200px \"Externer Anmeldedialog - OpenID " +"Connect\")" #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md msgid "This page will describe available authentication methods." -msgstr "Auf dieser Seite werden die verfügbaren Authentifizierungsmethoden beschrieben." +msgstr "" +"Auf dieser Seite werden die verfügbaren Authentifizierungsmethoden " +"beschrieben." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "For the user documentation, see [user documentation](/peertube-plugin-livechat/documentation/user/viewers/)" -msgstr "Für die Benutzerdokumentation, siehe [Benutzerdokumentation](/peertube-plugin-livechat/de/documentation/user/viewers/)" +msgid "" +"For the user documentation, see [user documentation](/peertube-plugin-" +"livechat/documentation/user/viewers/)" +msgstr "" +"Für die Benutzerdokumentation, siehe [Benutzerdokumentation](/peertube-" +"plugin-livechat/de/documentation/user/viewers/)" #. type: Title ## #: build/documentation/pot_in/documentation/admin/external_auth.md @@ -1826,28 +2835,56 @@ msgstr "" #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "You can configure one external [OpenID Connect](https://openid.net/developers/how-connect-works/) compatible provider." -msgstr "Sie können einen externen [OpenID Connect](https://openid.net/developers/how-connect-works/) kompatiblen Anbieter konfigurieren." +msgid "" +"You can configure one external [OpenID Connect](https://openid.net/" +"developers/how-connect-works/) compatible provider." +msgstr "" +"Sie können einen externen [OpenID Connect](https://openid.net/developers/how-" +"connect-works/) kompatiblen Anbieter konfigurieren." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md msgid "Doing so, you can for example use your website for Single Sign-On." -msgstr "Auf diese Weise können Sie Ihre Website beispielsweise für Single Sign-On nutzen." +msgstr "" +"Auf diese Weise können Sie Ihre Website beispielsweise für Single Sign-On " +"nutzen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "Popular CMS softwares (Wordpess, ...) offers plugins implementing OpenID Connect." -msgstr "Gängige CMS-Software (Wordpess, ...) bietet Plugins an, die OpenID Connect implementieren." +msgid "" +"Popular CMS softwares (Wordpess, ...) offers plugins implementing OpenID " +"Connect." +msgstr "" +"Gängige CMS-Software (Wordpess, ...) bietet Plugins an, die OpenID Connect " +"implementieren." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "To enable this feature, first you have to create a client on your provider side (check the related documentation for enabling OpenID Connect). Then go to the [plugin settings](/peertube-plugin-livechat/documentation/admin/settings), and enable \"{{% livechat_label external_auth_custom_oidc_label %}}\"." -msgstr "Um diese Funktion zu aktivieren, müssen Sie zunächst einen Client auf Ihrer Provider-Seite erstellen (lesen Sie die zugehörige Dokumentation zur Aktivierung von OpenID Connect). Gehen Sie dann zu den [Plugin-Einstellungen](/peertube-plugin-livechat/de/documentation/admin/settings), und aktivieren Sie \"{{% livechat_label external_auth_custom_oidc_label %}}\"." +msgid "" +"To enable this feature, first you have to create a client on your provider " +"side (check the related documentation for enabling OpenID Connect). Then go " +"to the [plugin settings](/peertube-plugin-livechat/documentation/admin/" +"settings), and enable \"{{% livechat_label external_auth_custom_oidc_label " +"%}}\"." +msgstr "" +"Um diese Funktion zu aktivieren, müssen Sie zunächst einen Client auf Ihrer " +"Provider-Seite erstellen (lesen Sie die zugehörige Dokumentation zur " +"Aktivierung von OpenID Connect). Gehen Sie dann zu den [Plugin-" +"Einstellungen](/peertube-plugin-livechat/de/documentation/admin/settings), " +"und aktivieren Sie \"{{% livechat_label external_auth_custom_oidc_label " +"%}}\"." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "Note: if you want to restrict allowed redirection urls on the provider side (best security practice), the plugin will show you the url to allow. Just copy it in your OpenID Connect application configuration." -msgstr "Hinweis: Wenn Sie zulässige Umleitungsurls auf der Anbieterseite einschränken möchten (beste Sicherheitspraxis), zeigt Ihnen das Plugin die zuzulassende Url an. Kopieren Sie sie einfach in die Konfiguration Ihrer OpenID Connect-Anwendung." +msgid "" +"Note: if you want to restrict allowed redirection urls on the provider side " +"(best security practice), the plugin will show you the url to allow. Just " +"copy it in your OpenID Connect application configuration." +msgstr "" +"Hinweis: Wenn Sie zulässige Umleitungsurls auf der Anbieterseite " +"einschränken möchten (beste Sicherheitspraxis), zeigt Ihnen das Plugin die " +"zuzulassende Url an. Kopieren Sie sie einfach in die Konfiguration Ihrer " +"OpenID Connect-Anwendung." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md @@ -1857,7 +2894,8 @@ msgstr "Sie müssen nun einige Einstellungen vornehmen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md msgid "This is the button label in the following screenshot:" -msgstr "Dies ist die Beschriftung der Schaltfläche auf dem folgenden Bildschirmfoto:" +msgstr "" +"Dies ist die Beschriftung der Schaltfläche auf dem folgenden Bildschirmfoto:" #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md @@ -1866,13 +2904,26 @@ msgstr "Zurzeit ist es nicht möglich, diesen Text zu übersetzen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "Your OpenID Connect provider must implement the [discovery URL](https://openid.net/specs/openid-connect-discovery-1_0.html). Just set here the discovery url, that should be something like `https://example.com/.well-known/openid-configuration`." -msgstr "Ihr OpenID Connect-Anbieter muss die [discovery URL](https://openid.net/specs/openid-connect-discovery-1_0.html) implementieren. Legen Sie hier einfach die Discovery Url fest, diese sollte ungefähr `https://example.com/.well-known/openid-configuration` sein." +msgid "" +"Your OpenID Connect provider must implement the [discovery URL](https://" +"openid.net/specs/openid-connect-discovery-1_0.html). Just set here the " +"discovery url, that should be something like `https://example.com/.well-" +"known/openid-configuration`." +msgstr "" +"Ihr OpenID Connect-Anbieter muss die [discovery URL](https://openid.net/" +"specs/openid-connect-discovery-1_0.html) implementieren. Legen Sie hier " +"einfach die Discovery Url fest, diese sollte ungefähr `https://example.com/." +"well-known/openid-configuration` sein." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "Note: if your provider use the standard `/.well-known/openid-configuration` path, you can omit it. For example `https://accounts.google.com` will work." -msgstr "Hinweis: Wenn Ihr Anbieter den Standardpfad `/.well-known/openid-configuration` verwendet, können Sie ihn weglassen. Zum Beispiel wird `https://accounts.google.com` funktionieren." +msgid "" +"Note: if your provider use the standard `/.well-known/openid-configuration` " +"path, you can omit it. For example `https://accounts.google.com` will work." +msgstr "" +"Hinweis: Wenn Ihr Anbieter den Standardpfad `/.well-known/openid-" +"configuration` verwendet, können Sie ihn weglassen. Zum Beispiel wird " +"`https://accounts.google.com` funktionieren." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md @@ -1892,33 +2943,69 @@ msgstr "Google, Facebook, ..." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "In addition to that, you can also configure one or several \"standard\" Open ID Connect provider (Google, Facebook, ...)." -msgstr "Darüber hinaus können Sie auch einen oder mehrere \"Standard\"-Open ID Connect-Anbieter (Google, Facebook, ...) konfigurieren." +msgid "" +"In addition to that, you can also configure one or several \"standard\" Open " +"ID Connect provider (Google, Facebook, ...)." +msgstr "" +"Darüber hinaus können Sie auch einen oder mehrere \"Standard\"-Open ID " +"Connect-Anbieter (Google, Facebook, ...) konfigurieren." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "For these providers, discovery url and button label are preset. You just have to create an OAuth2 application on the provider side, and configure Client ID and Client Secret." -msgstr "Bei diesen Anbietern sind die Discovery-Url und die Schaltflächenbeschriftung voreingestellt. Sie müssen lediglich eine OAuth2-Anwendung auf der Anbieterseite erstellen und Client ID und Client Secret konfigurieren." +msgid "" +"For these providers, discovery url and button label are preset. You just " +"have to create an OAuth2 application on the provider side, and configure " +"Client ID and Client Secret." +msgstr "" +"Bei diesen Anbietern sind die Discovery-Url und die " +"Schaltflächenbeschriftung voreingestellt. Sie müssen lediglich eine OAuth2-" +"Anwendung auf der Anbieterseite erstellen und Client ID und Client Secret " +"konfigurieren." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "If you think of a standard provider that is not available, you can ask for implementation by [opening a new issue](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues)." -msgstr "Wenn Ihnen ein Standardanbieter einfällt, der noch nicht verfügbar ist, können Sie um die Implementierung bitten, indem Sie [eine neues Problem] (https://github.com/JohnXLivingston/peertube-plugin-livechat/issues) eröffnen." +msgid "" +"If you think of a standard provider that is not available, you can ask for " +"implementation by [opening a new issue](https://github.com/JohnXLivingston/" +"peertube-plugin-livechat/issues)." +msgstr "" +"Wenn Ihnen ein Standardanbieter einfällt, der noch nicht verfügbar ist, " +"können Sie um die Implementierung bitten, indem Sie [eine neues Problem] " +"(https://github.com/JohnXLivingston/peertube-plugin-livechat/issues) " +"eröffnen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "If the button does not appear for end users, there might be a configuration issue. You can try the [diagnostic tool](/peertube-plugin-livechat/documentation/installation/troubleshooting/) to get more information." -msgstr "Wenn die Schaltfläche für Endbenutzer nicht angezeigt wird, liegt möglicherweise ein Konfigurationsproblem vor. Sie können das [Diagnose-Tool](/peertube-plugin-livechat/de/documentation/installation/troubleshooting/) ausprobieren, um weitere Informationen zu erhalten." +msgid "" +"If the button does not appear for end users, there might be a configuration " +"issue. You can try the [diagnostic tool](/peertube-plugin-livechat/" +"documentation/installation/troubleshooting/) to get more information." +msgstr "" +"Wenn die Schaltfläche für Endbenutzer nicht angezeigt wird, liegt " +"möglicherweise ein Konfigurationsproblem vor. Sie können das [Diagnose-Tool]" +"(/peertube-plugin-livechat/de/documentation/installation/troubleshooting/) " +"ausprobieren, um weitere Informationen zu erhalten." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "Note: if you are connected to your Peertube account, the button will never show. So use a private browser window to test." -msgstr "Hinweis: Wenn Sie mit Ihrem Peertube-Konto verbunden sind, wird die Schaltfläche nicht angezeigt. Verwenden Sie also ein privates Browserfenster zum Testen." +msgid "" +"Note: if you are connected to your Peertube account, the button will never " +"show. So use a private browser window to test." +msgstr "" +"Hinweis: Wenn Sie mit Ihrem Peertube-Konto verbunden sind, wird die " +"Schaltfläche nicht angezeigt. Verwenden Sie also ein privates Browserfenster " +"zum Testen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md -msgid "If the button is displayed but is not working, check your Peertube logs. It could be because the remote service does not use standard scopes or attribute names." -msgstr "Wenn die Schaltfläche angezeigt wird, aber nicht funktioniert, überprüfen Sie Ihre Peertube-Protokolle. Es könnte daran liegen, dass der entfernte Dienst keine Standard-Scopes oder Attributnamen verwendet." +msgid "" +"If the button is displayed but is not working, check your Peertube logs. It " +"could be because the remote service does not use standard scopes or " +"attribute names." +msgstr "" +"Wenn die Schaltfläche angezeigt wird, aber nicht funktioniert, überprüfen " +"Sie Ihre Peertube-Protokolle. Es könnte daran liegen, dass der entfernte " +"Dienst keine Standard-Scopes oder Attributnamen verwendet." #. type: Title ## #: build/documentation/pot_in/documentation/admin/external_auth.md @@ -1929,7 +3016,8 @@ msgstr "Weiteres folgt" #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md msgid "Other authentication methods will be implemented in the future." -msgstr "Andere Authentifizierungsmethoden werden in Zukunft implementiert werden." +msgstr "" +"Andere Authentifizierungsmethoden werden in Zukunft implementiert werden." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/admin/_index.md @@ -1955,28 +3043,46 @@ msgstr "Erweiterte Firewall-Regeln für den Prosody-Server" msgid "Prosody mod_firewall" msgstr "Prosody mod_firewall" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 11.0.0 verfügbar sein." - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md -msgid "You can enable [mod_firewall](https://modules.prosody.im/mod_firewall) on your Prosody server." -msgstr "Sie können [mod_firewall](https://modules.prosody.im/mod_firewall) auf Ihrem Prosody-Server aktivieren." +msgid "" +"You can enable [mod_firewall](https://modules.prosody.im/mod_firewall) on " +"your Prosody server." +msgstr "" +"Sie können [mod_firewall](https://modules.prosody.im/mod_firewall) auf Ihrem " +"Prosody-Server aktivieren." #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "Doing so, Peertube admins will be able to define advanced firewall rules." -msgstr "Auf diese Weise können Peertube-Administratoren erweiterte Firewall-Regeln definieren." +msgid "" +"Doing so, Peertube admins will be able to define advanced firewall rules." +msgstr "" +"Auf diese Weise können Peertube-Administratoren erweiterte Firewall-Regeln " +"definieren." #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "These rules could be used to run arbitrary code on the server. If you are a hosting provider, and you don't want to allow Peertube admins to write such rules, you can disable the online editing by creating a `disable_mod_firewall_editing` file in the plugin directory (`plugins/data/peertube-plugin-livechat/disable_mod_firewall_editing`). This is opt-out, as Peertube admins can already run arbitrary code just by installing any plugin. You can still use mod_firewall by editing files directly on the server." -msgstr "Diese Regeln könnten verwendet werden, um beliebigen Code auf dem Server auszuführen. Wenn Sie ein Hosting-Anbieter sind und Peertube-Administratoren nicht erlauben wollen, solche Regeln zu schreiben, können Sie die Online-Bearbeitung deaktivieren, indem Sie eine `disable_mod_firewall_editing`-Datei im Plugin-Verzeichnis erstellen (`plugins/data/peertube-plugin-livechat/disable_mod_firewall_editing`). Dies ist ein Opt-Out, da Peertube-Administratoren bereits beliebigen Code ausführen können, indem sie ein beliebiges Plugin installieren. Sie können mod_firewall immer noch verwenden, indem Sie Dateien direkt auf dem Server bearbeiten." +msgid "" +"These rules could be used to run arbitrary code on the server. If you are a " +"hosting provider, and you don't want to allow Peertube admins to write such " +"rules, you can disable the online editing by creating a " +"`disable_mod_firewall_editing` file in the plugin directory (`plugins/data/" +"peertube-plugin-livechat/disable_mod_firewall_editing`). This is opt-out, " +"as Peertube admins can already run arbitrary code just by installing any " +"plugin. You can still use mod_firewall by editing files directly on the " +"server." +msgstr "" +"Diese Regeln könnten verwendet werden, um beliebigen Code auf dem Server " +"auszuführen. Wenn Sie ein Hosting-Anbieter sind und Peertube-" +"Administratoren nicht erlauben wollen, solche Regeln zu schreiben, können " +"Sie die Online-Bearbeitung deaktivieren, indem Sie eine " +"`disable_mod_firewall_editing`-Datei im Plugin-Verzeichnis erstellen " +"(`plugins/data/peertube-plugin-livechat/disable_mod_firewall_editing`). " +"Dies ist ein Opt-Out, da Peertube-Administratoren bereits beliebigen Code " +"ausführen können, indem sie ein beliebiges Plugin installieren. Sie können " +"mod_firewall immer noch verwenden, indem Sie Dateien direkt auf dem Server " +"bearbeiten." #. type: Title ## #: support/documentation/content/en/documentation/admin/mod_firewall.md @@ -1986,17 +3092,30 @@ msgstr "Regeln bearbeiten" #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "First, you must enable the feature in the [plugin settings](/peertube-plugin-livechat/documentation/admin/settings)." -msgstr "Zuerst müssen Sie die Funktion in den [Plugin-Einstellungen](/peertube-plugin-livechat/de/documentation/admin/settings) aktivieren." +msgid "" +"First, you must enable the feature in the [plugin settings](/peertube-plugin-" +"livechat/documentation/admin/settings)." +msgstr "" +"Zuerst müssen Sie die Funktion in den [Plugin-Einstellungen](/peertube-" +"plugin-livechat/de/documentation/admin/settings) aktivieren." #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "Just bellow the settings, you will find a \"Configure mod_firewall\" button. This button will open a configuration page." -msgstr "Direkt unter den Einstellungen finden Sie die Schaltfläche \"Configure mod_firewall\". Mit dieser Schaltfläche wird eine Konfigurationsseite geöffnet." +msgid "" +"Just bellow the settings, you will find a \"Configure mod_firewall\" " +"button. This button will open a configuration page." +msgstr "" +"Direkt unter den Einstellungen finden Sie die Schaltfläche \"Configure " +"mod_firewall\". Mit dieser Schaltfläche wird eine Konfigurationsseite " +"geöffnet." #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "![Screenshot of the \"{{% livechat_label prosody_firewall_configuration %}}\" form.](/peertube-plugin-livechat/images/mod_firewall.png?classes=shadow,border&height=400px \"{{% livechat_label prosody_firewall_configuration %}}\")" +msgid "" +"![Screenshot of the \"{{% livechat_label prosody_firewall_configuration " +"%}}\" form.](/peertube-plugin-livechat/images/mod_firewall.png?" +"classes=shadow,border&height=400px \"{{% livechat_label " +"prosody_firewall_configuration %}}\")" msgstr "" "![Screenshot des Formulars \"{{% livechat_label " "prosody_firewall_configuration %}}\".](/peertube-plugin-livechat/images/" @@ -2015,18 +3134,55 @@ msgstr "Sie können jede Datei aktivieren/deaktivieren." #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "Files will be loaded in the alphabetical order. You can use a number as prefix to easily choose the order." -msgstr "Die Dateien werden in alphabetischer Reihenfolge geladen. Sie können eine Zahl als Präfix verwenden, um die Reihenfolge einfach zu wählen." +msgid "" +"Files will be loaded in the alphabetical order. You can use a number as " +"prefix to easily choose the order." +msgstr "" +"Die Dateien werden in alphabetischer Reihenfolge geladen. Sie können eine " +"Zahl als Präfix verwenden, um die Reihenfolge einfach zu wählen." #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "You can also edit these firewall rules directly on the server, in the `plugins/data/peertube-plugin-livechat/prosody/mod_firewall_config/` directory. File names must only contains alphanumerical characters, underscores and hyphens. The extension must be `.pfw`, or `.pfw.disabled` if you want to disable a file. Please be sure that the peertube system user has write access to these files, else the web editing interface will fail. Once you have edited these files, you must reload prosody. This can be done by saving the plugin settings, or saving the mod_firewall configuration in the web interface, or by restarting Peertube." -msgstr "Sie können diese Firewall-Regeln auch direkt auf dem Server im Verzeichnis `plugins/data/peertube-plugin-livechat/prosody/mod_firewall_config/` bearbeiten. Die Dateinamen dürfen nur alphanumerische Zeichen, Unterstriche und Bindestriche enthalten. Die Erweiterung muss `.pfw` sein, oder `.pfw.disabled`, wenn Sie eine Datei deaktivieren wollen. Vergewissern Sie sich, dass der Peertube-Systembenutzer Schreibrechte für diese Dateien hat, sonst schlägt die Bearbeitung über die Webschnittstelle fehl. Nachdem Sie diese Dateien bearbeitet haben, müssen Sie prosody neu laden. Dies kann durch Speichern der Plugin-Einstellungen, durch Speichern der mod_firewall-Konfiguration im Web-Interface oder durch einen Neustart von Peertube geschehen." +msgid "" +"You can also edit these firewall rules directly on the server, in the " +"`plugins/data/peertube-plugin-livechat/prosody/mod_firewall_config/` " +"directory. File names must only contains alphanumerical characters, " +"underscores and hyphens. The extension must be `.pfw`, or `.pfw.disabled` " +"if you want to disable a file. Please be sure that the peertube system user " +"has write access to these files, else the web editing interface will fail. " +"Once you have edited these files, you must reload prosody. This can be done " +"by saving the plugin settings, or saving the mod_firewall configuration in " +"the web interface, or by restarting Peertube." +msgstr "" +"Sie können diese Firewall-Regeln auch direkt auf dem Server im Verzeichnis " +"`plugins/data/peertube-plugin-livechat/prosody/mod_firewall_config/` " +"bearbeiten. Die Dateinamen dürfen nur alphanumerische Zeichen, Unterstriche " +"und Bindestriche enthalten. Die Erweiterung muss `.pfw` sein, oder `.pfw." +"disabled`, wenn Sie eine Datei deaktivieren wollen. Vergewissern Sie sich, " +"dass der Peertube-Systembenutzer Schreibrechte für diese Dateien hat, sonst " +"schlägt die Bearbeitung über die Webschnittstelle fehl. Nachdem Sie diese " +"Dateien bearbeitet haben, müssen Sie prosody neu laden. Dies kann durch " +"Speichern der Plugin-Einstellungen, durch Speichern der mod_firewall-" +"Konfiguration im Web-Interface oder durch einen Neustart von Peertube " +"geschehen." #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "When you save the configuration, the server will automatically reload it, and your rules will apply immediatly. You can check that there is no parsing error in the Prosody error log. To do so, you can read the `plugins/data/peertube-plugin-livechat/prosody/prosody.err` file, or use the [diagnostic tool](/peertube-plugin-livechat/documentation/installation/troubleshooting/) that will show last Prosody errors." -msgstr "Wenn Sie die Konfiguration speichern, wird der Server sie automatisch neu laden, und Ihre Regeln werden sofort angewendet. Sie können im Prosody-Fehlerprotokoll überprüfen, ob ein Parsing-Fehler aufgetreten ist. Dazu können Sie die Datei `plugins/data/peertube-plugin-livechat/prosody/prosody.err` lesen oder das [Diagnose-Tool](/peertube-plugin-livechat/de/documentation/installation/troubleshooting/) verwenden, das die letzten Prosody-Fehler anzeigt." +msgid "" +"When you save the configuration, the server will automatically reload it, " +"and your rules will apply immediatly. You can check that there is no " +"parsing error in the Prosody error log. To do so, you can read the `plugins/" +"data/peertube-plugin-livechat/prosody/prosody.err` file, or use the " +"[diagnostic tool](/peertube-plugin-livechat/documentation/installation/" +"troubleshooting/) that will show last Prosody errors." +msgstr "" +"Wenn Sie die Konfiguration speichern, wird der Server sie automatisch neu " +"laden, und Ihre Regeln werden sofort angewendet. Sie können im Prosody-" +"Fehlerprotokoll überprüfen, ob ein Parsing-Fehler aufgetreten ist. Dazu " +"können Sie die Datei `plugins/data/peertube-plugin-livechat/prosody/prosody." +"err` lesen oder das [Diagnose-Tool](/peertube-plugin-livechat/de/" +"documentation/installation/troubleshooting/) verwenden, das die letzten " +"Prosody-Fehler anzeigt." #. type: Title ## #: support/documentation/content/en/documentation/admin/mod_firewall.md @@ -2036,8 +3192,13 @@ msgstr "Beispiele" #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md -msgid "Don't hesitate to share your rules. To do so, you can for example edit this [page](/peertube-plugin-livechat/contributing/document/#write-documentation)." -msgstr "Zögern Sie nicht, Ihre Regeln zu teilen. Um dies zu tun, können Sie zum Beispiel diese [Seite](/peertube-plugin-livechat/contributing/document/#write-documentation) bearbeiten." +msgid "" +"Don't hesitate to share your rules. To do so, you can for example edit this " +"[page](/peertube-plugin-livechat/contributing/document/#write-documentation)." +msgstr "" +"Zögern Sie nicht, Ihre Regeln zu teilen. Um dies zu tun, können Sie zum " +"Beispiel diese [Seite](/peertube-plugin-livechat/contributing/document/" +"#write-documentation) bearbeiten." #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/admin/settings.md @@ -2058,18 +3219,32 @@ msgstr "Dieser Abschnitt beschreibt die Seite mit den Plugin Einstellungen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "For more information on this feature, check the documentation for [channel's terms & conditions](/peertube-plugin-livechat/documentation/user/streamers/terms)." -msgstr "Weitere Informationen zu dieser Funktion finden Sie in der Dokumentation zu den [Kanal-Nutzungsbedingungen](/peertube-plugin-livechat/de/documentation/user/streamers/terms)." +msgid "" +"For more information on this feature, check the documentation for [channel's " +"terms & conditions](/peertube-plugin-livechat/documentation/user/streamers/" +"terms)." +msgstr "" +"Weitere Informationen zu dieser Funktion finden Sie in der Dokumentation zu " +"den [Kanal-Nutzungsbedingungen](/peertube-plugin-livechat/de/documentation/" +"user/streamers/terms)." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "Changing this setting will restart the chat server, and all users will be disconnected for a short time." -msgstr "Wenn Sie diese Einstellung ändern, wird der Chatserver neu gestartet, und alle Benutzer werden für kurze Zeit getrennt." +msgid "" +"Changing this setting will restart the chat server, and all users will be " +"disconnected for a short time." +msgstr "" +"Wenn Sie diese Einstellung ändern, wird der Chatserver neu gestartet, und " +"alle Benutzer werden für kurze Zeit getrennt." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "When pressing the «List rooms» button, all existing chatrooms will be listed. You can then find them and moderated them." -msgstr "Wenn Sie auf die Schaltfläche «Räume auflisten» klicken, werden alle bestehenden Chaträume aufgelistet. Sie können sie dann finden und moderieren." +msgid "" +"When pressing the «List rooms» button, all existing chatrooms will be " +"listed. You can then find them and moderated them." +msgstr "" +"Wenn Sie auf die Schaltfläche «Räume auflisten» klicken, werden alle " +"bestehenden Chaträume aufgelistet. Sie können sie dann finden und moderieren." #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md @@ -2080,8 +3255,12 @@ msgstr "Föderation" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "Following settings concern the federation with other Peertube instances, and other fediverse softwares." -msgstr "Die folgenden Einstellungen betreffen die Föderation mit anderen Peertube Instanzen und anderer Fediverse-Software." +msgid "" +"Following settings concern the federation with other Peertube instances, and " +"other fediverse softwares." +msgstr "" +"Die folgenden Einstellungen betreffen die Föderation mit anderen Peertube " +"Instanzen und anderer Fediverse-Software." #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md @@ -2091,8 +3270,12 @@ msgstr "Authentifizierung" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "In case you have any trouble with the long term authentication tokens, you can disable the feature here." -msgstr "Falls Sie Probleme mit den Langzeit-Authentifizierungs-Tokens haben, können Sie diese Funktion hier deaktivieren." +msgid "" +"In case you have any trouble with the long term authentication tokens, you " +"can disable the feature here." +msgstr "" +"Falls Sie Probleme mit den Langzeit-Authentifizierungs-Tokens haben, können " +"Sie diese Funktion hier deaktivieren." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md @@ -2101,8 +3284,12 @@ msgstr "Siehe die ausführliche Dokumentationsseite:" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "[External Authentication](/peertube-plugin-livechat/documentation/admin/external_auth/)" -msgstr "[Externe Authentifizierung](/peertube-plugin-livechat/documentation/admin/external_auth/)" +msgid "" +"[External Authentication](/peertube-plugin-livechat/documentation/admin/" +"external_auth/)" +msgstr "" +"[Externe Authentifizierung](/peertube-plugin-livechat/documentation/admin/" +"external_auth/)" #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md @@ -2112,13 +3299,18 @@ msgstr "Erweiterte Kanaleinstellungen" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "Following settings concern the advanced channel options: users will be able to add some customization on their channels, activate the moderation bot, ..." -msgstr "Die folgenden Einstellungen betreffen die erweiterten Kanaloptionen: Nutzer können ihre Kanäle individuell anpassen, den Moderationsbot aktivieren, ..." +msgid "" +"Following settings concern the advanced channel options: users will be able " +"to add some customization on their channels, activate the moderation bot, ..." +msgstr "" +"Die folgenden Einstellungen betreffen die erweiterten Kanaloptionen: Nutzer " +"können ihre Kanäle individuell anpassen, den Moderationsbot aktivieren, ..." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md msgid "If you encounter any issue with this feature, you can disable it." -msgstr "Wenn Sie Probleme mit dieser Funktion haben, können Sie sie deaktivieren." +msgstr "" +"Wenn Sie Probleme mit dieser Funktion haben, können Sie sie deaktivieren." #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md @@ -2128,18 +3320,31 @@ msgstr "Chatverhalten" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "This feature enables a «share chat link» modal. With this modal, you can generate URLs to join the chat. The chat can be customized (readonly mode, use the current theme, ...)." -msgstr "Diese Funktion fügt eine «Chat-Link teilen» Schaltfläche hinzu. Mit dieser Schaltfläche können Sie URLs generieren, um dem Chat beizutreten. Der Chat kann angepasst werden (schreibgeschützter Modus, Verwendung des aktuellen Themas, ...)." +msgid "" +"This feature enables a «share chat link» modal. With this modal, you can " +"generate URLs to join the chat. The chat can be customized (readonly mode, " +"use the current theme, ...)." +msgstr "" +"Diese Funktion fügt eine «Chat-Link teilen» Schaltfläche hinzu. Mit dieser " +"Schaltfläche können Sie URLs generieren, um dem Chat beizutreten. Der Chat " +"kann angepasst werden (schreibgeschützter Modus, Verwendung des aktuellen " +"Themas, ...)." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "You can for example generate a readonly URL and use it in OBS to integrate the chat in your live stream!" -msgstr "Sie können zum Beispiel eine schreibgeschützte URL generieren und diese in OBS verwenden, um den Chat in Ihren Live-Stream zu integrieren!" +msgid "" +"You can for example generate a readonly URL and use it in OBS to integrate " +"the chat in your live stream!" +msgstr "" +"Sie können zum Beispiel eine schreibgeschützte URL generieren und diese in " +"OBS verwenden, um den Chat in Ihren Live-Stream zu integrieren!" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md msgid "This setting allows you to choose who can access this modal." -msgstr "Mit dieser Einstellung können Sie festlegen, wer auf diese Schaltfläche zugreifen kann." +msgstr "" +"Mit dieser Einstellung können Sie festlegen, wer auf diese Schaltfläche " +"zugreifen kann." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md @@ -2148,8 +3353,17 @@ msgstr "Der Eigentümer des Videos kann Webchats aktivieren." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "Note: for now this feature simply hide the chat. In a future release, the chat will be replaced by a message saying «please log in to [...]». See [v5.7.0 Release Notes](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md#570) for more information." -msgstr "Hinweis: Im Moment blendet diese Funktion einfach den Chat aus. In einer zukünftigen Version wird der Chat durch eine Meldung ersetzt, die besagt «Bitte melden Sie sich an, um [...]». Siehe [v5.7.0 Release Notes](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md#570) für weitere Informationen." +msgid "" +"Note: for now this feature simply hide the chat. In a future release, the " +"chat will be replaced by a message saying «please log in to [...]». See " +"[v5.7.0 Release Notes](https://github.com/JohnXLivingston/peertube-plugin-" +"livechat/blob/main/CHANGELOG.md#570) for more information." +msgstr "" +"Hinweis: Im Moment blendet diese Funktion einfach den Chat aus. In einer " +"zukünftigen Version wird der Chat durch eine Meldung ersetzt, die besagt " +"«Bitte melden Sie sich an, um [...]». Siehe [v5.7.0 Release Notes](https://" +"github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG." +"md#570) für weitere Informationen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md @@ -2171,85 +3385,146 @@ msgstr "Farbthemen" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "You can choose from several different sets the default avatars that will be used for chat users." -msgstr "Sie können aus mehreren verschiedenen Sets von Standard-Avataren wählen, die für Chat-Benutzer verwendet werden sollen." - -#. type: Plain text -#: build/documentation/pot_in/documentation/admin/settings.md -msgid "{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube avatar generator](https://www.peppercarrot.com/extras/html/2023_peertube-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) license" -msgstr "{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube Avatargenerator](https://www.peppercarrot.com/extras/html/2023_peertube-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" - -#. type: Plain text -#: build/documentation/pot_in/documentation/admin/settings.md -msgid "![Sepia avatar example](/peertube-plugin-livechat/images/avatar_sepia.png?classes=shadow,border&height=40px \"Sepia\")" +msgid "" +"You can choose from several different sets the default avatars that will be " +"used for chat users." msgstr "" -"![Sepia Avatar Beispiel](/peertube-plugin-livechat/images/" -"avatar_sepia.png?classes=shadow,border&height=40px \"Sepia\")" +"Sie können aus mehreren verschiedenen Sets von Standard-Avataren wählen, die " +"für Chat-Benutzer verwendet werden sollen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "{{% livechat_label avatar_set_option_cat %}}: [David Revoy's cat avatar generator](https://www.peppercarrot.com/extras/html/2016_cat-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) license" -msgstr "{{% livechat_label avatar_set_option_cat %}}: [David Revoy's Katzen Avatargenerator](https://www.peppercarrot.com/extras/html/2016_cat-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" - -#. type: Plain text -#: build/documentation/pot_in/documentation/admin/settings.md -msgid "![Cats avatar example](/peertube-plugin-livechat/images/avatar_cat.png?classes=shadow,border&height=40px \"Cats\")" +msgid "" +"{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube " +"avatar generator](https://www.peppercarrot.com/extras/html/2023_peertube-" +"generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) license" msgstr "" -"![Katzen AvatarBeispiel](/peertube-plugin-livechat/images/" -"avatar_cat.png?classes=shadow,border&height=40px \"Katzen\")" +"{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube " +"Avatargenerator](https://www.peppercarrot.com/extras/html/2023_peertube-" +"generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "{{% livechat_label avatar_set_option_bird %}}: [David Revoy's bird avatar generator](https://www.peppercarrot.com/extras/html/2019_bird-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) license" -msgstr "{{% livechat_label avatar_set_option_bird %}}: [David Revoy's Vögel Avatargenerator](https://www.peppercarrot.com/extras/html/2019_bird-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" - -#. type: Plain text -#: build/documentation/pot_in/documentation/admin/settings.md -msgid "![Birds avatar example](/peertube-plugin-livechat/images/avatar_bird.png?classes=shadow,border&height=40px \"Birds\")" +msgid "" +"![Sepia avatar example](/peertube-plugin-livechat/images/avatar_sepia.png?" +"classes=shadow,border&height=40px \"Sepia\")" msgstr "" -"![Vogel Avatar Beispiel](/peertube-plugin-livechat/images/" -"avatar_bird.png?classes=shadow,border&height=40px \"Vögel\")" +"![Sepia Avatar Beispiel](/peertube-plugin-livechat/images/avatar_sepia.png?" +"classes=shadow,border&height=40px \"Sepia\")" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's fenec/mobilizon avatar generator](https://www.peppercarrot.com/extras/html/2020_mobilizon-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) license" -msgstr "{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's Fenec/Mobilizon Avatargenerator](https://www.peppercarrot.com/extras/html/2020_mobilizon-generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" - -#. type: Plain text -#: build/documentation/pot_in/documentation/admin/settings.md -msgid "![Fenecs avatar example](/peertube-plugin-livechat/images/avatar_fenec.png?classes=shadow,border&height=40px \"Fenecs\")" +msgid "" +"{{% livechat_label avatar_set_option_cat %}}: [David Revoy's cat avatar " +"generator](https://www.peppercarrot.com/extras/html/2016_cat-generator/), " +"[CC-By](https://creativecommons.org/licenses/by/4.0/) license" msgstr "" -"![Fenecs Avatar Beispiel](/peertube-plugin-livechat/images/" -"avatar_fenec.png?classes=shadow,border&height=40px \"Fenecs\")" +"{{% livechat_label avatar_set_option_cat %}}: [David Revoy's Katzen " +"Avatargenerator](https://www.peppercarrot.com/extras/html/2016_cat-" +"generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "{{% livechat_label avatar_set_option_abstract %}}: [David Revoy's Abstract avatar generator](https://www.peppercarrot.com/extras/html/2017_abstract-generator/index.php), [CC-By](https://creativecommons.org/licenses/by/4.0/) license" -msgstr "{{% livechat_label avatar_set_option_abstract %}}: [David Revoy's Abstrakt Avatargenerator](https://www.peppercarrot.com/extras/html/2017_abstract-generator/index.php), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" - -#. type: Plain text -#: build/documentation/pot_in/documentation/admin/settings.md -msgid "![Abstracts avatar example](/peertube-plugin-livechat/images/avatar_abstract.png?classes=shadow,border&height=40px \"Abtracts\")" +msgid "" +"![Cats avatar example](/peertube-plugin-livechat/images/avatar_cat.png?" +"classes=shadow,border&height=40px \"Cats\")" msgstr "" -"![Abstrakt Avatar Beispiel](/peertube-plugin-livechat/images/" -"avatar_abstract.png?classes=shadow,border&height=40px \"Abstrakt\")" +"![Katzen AvatarBeispiel](/peertube-plugin-livechat/images/avatar_cat.png?" +"classes=shadow,border&height=40px \"Katzen\")" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "{{% livechat_label avatar_set_option_legacy %}}: Based on [David Revoy' work](https://www.davidrevoy.com), [AGPL-v3](https://www.gnu.org/licenses/agpl-3.0.en.html) license" -msgstr "{{% livechat_label avatar_set_option_legacy %}}: Basierend auf [David Revoys Arbeit](https://www.davidrevoy.com), [AGPL-v3](https://www.gnu.org/licenses/agpl-3.0.en.html) Lizenz" - -#. type: Plain text -#: build/documentation/pot_in/documentation/admin/settings.md -msgid "![Legacy avatar example](/peertube-plugin-livechat/images/avatar_legacy.jpg?classes=shadow,border&height=40px \"Legacy\")" +msgid "" +"{{% livechat_label avatar_set_option_bird %}}: [David Revoy's bird avatar " +"generator](https://www.peppercarrot.com/extras/html/2019_bird-generator/), " +"[CC-By](https://creativecommons.org/licenses/by/4.0/) license" msgstr "" -"![Alte Avatare Beispiel](/peertube-plugin-livechat/images/" -"avatar_legacy.jpg?classes=shadow,border&height=40px \"Alte Avatare\")" +"{{% livechat_label avatar_set_option_bird %}}: [David Revoy's Vögel " +"Avatargenerator](https://www.peppercarrot.com/extras/html/2019_bird-" +"generator/), [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "If you can't see the change immediatly, it could be because of your browser cache. Just clear your browser session storage, or restart it." -msgstr "Wenn Sie die Änderung nicht sofort sehen können, könnte es an Ihrem Browser-Cache liegen. Löschen Sie einfach den Sitzungsspeicher Ihres Browsers, oder starten Sie ihn neu." +msgid "" +"![Birds avatar example](/peertube-plugin-livechat/images/avatar_bird.png?" +"classes=shadow,border&height=40px \"Birds\")" +msgstr "" +"![Vogel Avatar Beispiel](/peertube-plugin-livechat/images/avatar_bird.png?" +"classes=shadow,border&height=40px \"Vögel\")" + +#. type: Plain text +#: build/documentation/pot_in/documentation/admin/settings.md +msgid "" +"{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's fenec/" +"mobilizon avatar generator](https://www.peppercarrot.com/extras/" +"html/2020_mobilizon-generator/), [CC-By](https://creativecommons.org/" +"licenses/by/4.0/) license" +msgstr "" +"{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's Fenec/" +"Mobilizon Avatargenerator](https://www.peppercarrot.com/extras/" +"html/2020_mobilizon-generator/), [CC-By](https://creativecommons.org/" +"licenses/by/4.0/) Lizenz" + +#. type: Plain text +#: build/documentation/pot_in/documentation/admin/settings.md +msgid "" +"![Fenecs avatar example](/peertube-plugin-livechat/images/avatar_fenec.png?" +"classes=shadow,border&height=40px \"Fenecs\")" +msgstr "" +"![Fenecs Avatar Beispiel](/peertube-plugin-livechat/images/avatar_fenec.png?" +"classes=shadow,border&height=40px \"Fenecs\")" + +#. type: Plain text +#: build/documentation/pot_in/documentation/admin/settings.md +msgid "" +"{{% livechat_label avatar_set_option_abstract %}}: [David Revoy's Abstract " +"avatar generator](https://www.peppercarrot.com/extras/html/2017_abstract-" +"generator/index.php), [CC-By](https://creativecommons.org/licenses/by/4.0/) " +"license" +msgstr "" +"{{% livechat_label avatar_set_option_abstract %}}: [David Revoy's Abstrakt " +"Avatargenerator](https://www.peppercarrot.com/extras/html/2017_abstract-" +"generator/index.php), [CC-By](https://creativecommons.org/licenses/by/4.0/) " +"Lizenz" + +#. type: Plain text +#: build/documentation/pot_in/documentation/admin/settings.md +msgid "" +"![Abstracts avatar example](/peertube-plugin-livechat/images/avatar_abstract." +"png?classes=shadow,border&height=40px \"Abtracts\")" +msgstr "" +"![Abstrakt Avatar Beispiel](/peertube-plugin-livechat/images/avatar_abstract." +"png?classes=shadow,border&height=40px \"Abstrakt\")" + +#. type: Plain text +#: build/documentation/pot_in/documentation/admin/settings.md +msgid "" +"{{% livechat_label avatar_set_option_legacy %}}: Based on [David Revoy' work]" +"(https://www.davidrevoy.com), [AGPL-v3](https://www.gnu.org/licenses/" +"agpl-3.0.en.html) license" +msgstr "" +"{{% livechat_label avatar_set_option_legacy %}}: Basierend auf [David Revoys " +"Arbeit](https://www.davidrevoy.com), [AGPL-v3](https://www.gnu.org/licenses/" +"agpl-3.0.en.html) Lizenz" + +#. type: Plain text +#: build/documentation/pot_in/documentation/admin/settings.md +msgid "" +"![Legacy avatar example](/peertube-plugin-livechat/images/avatar_legacy.jpg?" +"classes=shadow,border&height=40px \"Legacy\")" +msgstr "" +"![Alte Avatare Beispiel](/peertube-plugin-livechat/images/avatar_legacy.jpg?" +"classes=shadow,border&height=40px \"Alte Avatare\")" + +#. type: Plain text +#: build/documentation/pot_in/documentation/admin/settings.md +msgid "" +"If you can't see the change immediatly, it could be because of your browser " +"cache. Just clear your browser session storage, or restart it." +msgstr "" +"Wenn Sie die Änderung nicht sofort sehen können, könnte es an Ihrem Browser-" +"Cache liegen. Löschen Sie einfach den Sitzungsspeicher Ihres Browsers, oder " +"starten Sie ihn neu." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md @@ -2258,8 +3533,12 @@ msgstr "Sie können wählen, welches Thema Sie für ConverseJS verwenden möchte #. type: Bullet: '- ' #: build/documentation/pot_in/documentation/admin/settings.md -msgid "Peertube theme: this is a special theme, made especially for peertube's integration." -msgstr "Peertube theme: Dies ist ein spezielles Thema, das speziell für die Integration von Peertube entwickelt wurde." +msgid "" +"Peertube theme: this is a special theme, made especially for peertube's " +"integration." +msgstr "" +"Peertube theme: Dies ist ein spezielles Thema, das speziell für die " +"Integration von Peertube entwickelt wurde." #. type: Bullet: '- ' #: build/documentation/pot_in/documentation/admin/settings.md @@ -2269,7 +3548,9 @@ msgstr "Default ConverseJS theme: Dies ist das standard ConverseJS Thema." #. type: Bullet: '- ' #: build/documentation/pot_in/documentation/admin/settings.md msgid "ConverseJS cyberpunk theme: this is a theme provided by ConverseJS." -msgstr "ConverseJS cyberpunk theme: Dies ist ein von ConverseJS bereitgestelltes Thema." +msgstr "" +"ConverseJS cyberpunk theme: Dies ist ein von ConverseJS bereitgestelltes " +"Thema." #. type: Title ## #: build/documentation/pot_in/documentation/admin/settings.md @@ -2279,13 +3560,25 @@ msgstr "Erweiterte Einstellungen des Chatservers" #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "The plugin comes with an AppImage that is used to run the [Prosody XMPP server](https://prosody.im). If this AppImage is not working, you can fallback to the Prosody that is packaged for your server. Just install the `prosody` package." -msgstr "Das Plugin wird mit einem AppImage geliefert, das zum Ausführen des [Prosody XMPP-Servers](https://prosody.im) verwendet wird. Wenn dieses AppImage nicht funktioniert, können Sie auf das Prosody-Paket zurückgreifen, das für Ihren Server gepackt ist. Installieren Sie einfach das Paket `prosody`." +msgid "" +"The plugin comes with an AppImage that is used to run the [Prosody XMPP " +"server](https://prosody.im). If this AppImage is not working, you can " +"fallback to the Prosody that is packaged for your server. Just install the " +"`prosody` package." +msgstr "" +"Das Plugin wird mit einem AppImage geliefert, das zum Ausführen des [Prosody " +"XMPP-Servers](https://prosody.im) verwendet wird. Wenn dieses AppImage nicht " +"funktioniert, können Sie auf das Prosody-Paket zurückgreifen, das für Ihren " +"Server gepackt ist. Installieren Sie einfach das Paket `prosody`." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "This setting should only be used if the plugin is broken, and waiting for a patch." -msgstr "Diese Einstellung sollte nur verwendet werden, wenn das Plugin defekt ist und auf einen Patch wartet." +msgid "" +"This setting should only be used if the plugin is broken, and waiting for a " +"patch." +msgstr "" +"Diese Einstellung sollte nur verwendet werden, wenn das Plugin defekt ist " +"und auf einen Patch wartet." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md @@ -2295,38 +3588,85 @@ msgstr "Wenn diese Einstellung leer gelassen wird und Sie Peertube >= 5.1 oder s #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "In last resort, it will use your Peertube public URI. So, any API Call will go throught your Nginx server. This could fail in some case: for example if you are in a Docker container, where the public hostname does not resolve to the correct IP. In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." -msgstr "Schlussendlich wird es Ihre öffentliche Peertube-URI verwenden. So wird jeder API-Aufruf über Ihren Nginx-Server laufen. Dies kann in einigen Fällen fehlschlagen: z.B. wenn Sie sich in einem Docker-Container befinden, wo der öffentliche Hostname nicht zur richtigen IP aufgelöst wird. Versuchen Sie in diesem Fall, die \"{{% livechat_label prosody_peertube_uri_label %}}\" Einstellungen zu ändern, indem Sie `http://127.0.0.1:9000` einstellen (unter der Annahme, dass 9000 der Port ist, auf dem Peertube lauscht; fragen Sie Ihre Instanzadministratoren, wenn Sie es nicht wissen)." +msgid "" +"In last resort, it will use your Peertube public URI. So, any API Call will " +"go throught your Nginx server. This could fail in some case: for example if " +"you are in a Docker container, where the public hostname does not resolve to " +"the correct IP. In such case, try changing the \"{{% livechat_label " +"prosody_peertube_uri_label %}}\" settings, by setting " +"`http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, " +"ask your instance administrators if you don't know)." +msgstr "" +"Schlussendlich wird es Ihre öffentliche Peertube-URI verwenden. So wird " +"jeder API-Aufruf über Ihren Nginx-Server laufen. Dies kann in einigen " +"Fällen fehlschlagen: z.B. wenn Sie sich in einem Docker-Container befinden, " +"wo der öffentliche Hostname nicht zur richtigen IP aufgelöst wird. " +"Versuchen Sie in diesem Fall, die \"{{% livechat_label " +"prosody_peertube_uri_label %}}\" Einstellungen zu ändern, indem Sie " +"`http://127.0.0.1:9000` einstellen (unter der Annahme, dass 9000 der Port " +"ist, auf dem Peertube lauscht; fragen Sie Ihre Instanzadministratoren, wenn " +"Sie es nicht wissen)." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "This setting enable XMPP clients to connect to the built-in Prosody server. For now, this option **only allows connections from localhost clients**." -msgstr "Diese Einstellung ermöglicht es XMPP-Clients, sich mit dem eingebauten Prosody-Server zu verbinden. Im Moment erlaubt diese Option **nur Verbindungen von localhost-Clients**." +msgid "" +"This setting enable XMPP clients to connect to the built-in Prosody server. " +"For now, this option **only allows connections from localhost clients**." +msgstr "" +"Diese Einstellung ermöglicht es XMPP-Clients, sich mit dem eingebauten " +"Prosody-Server zu verbinden. Im Moment erlaubt diese Option **nur " +"Verbindungen von localhost-Clients**." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "As example, this option can allow an instance of Matterbridge (once it could use anonymous login) *on the same machine* to bridge your chat with another services like a Matrix room." -msgstr "Zum Beispiel kann diese Option einer Instanz von Matterbridge (sobald sie einen anonymen Login verwenden kann) *auf demselben Rechner* erlauben, Ihren Chat mit einem anderen Dienst wie einem Matrix-Raum zu verbinden." +msgid "" +"As example, this option can allow an instance of Matterbridge (once it could " +"use anonymous login) *on the same machine* to bridge your chat with another " +"services like a Matrix room." +msgstr "" +"Zum Beispiel kann diese Option einer Instanz von Matterbridge (sobald sie " +"einen anonymen Login verwenden kann) *auf demselben Rechner* erlauben, Ihren " +"Chat mit einem anderen Dienst wie einem Matrix-Raum zu verbinden." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "This setting enable XMPP external components to connect to the server. By default, this option **only allows connections from localhost components**. You have to change the \"{{% livechat_label prosody_components_interfaces_label %}}\" value to listen on other network interfaces." -msgstr "Diese Einstellung ermöglicht es externen XMPP-Komponenten, sich mit dem Server zu verbinden. Standardmäßig erlaubt diese Option **nur Verbindungen von localhost-Komponenten**. Sie müssen den Wert \"{{% livechat_label prosody_components_interfaces_label %}}\" ändern, um an anderen Netzwerkschnittstellen zu lauschen." +msgid "" +"This setting enable XMPP external components to connect to the server. By " +"default, this option **only allows connections from localhost components**. " +"You have to change the \"{{% livechat_label " +"prosody_components_interfaces_label %}}\" value to listen on other network " +"interfaces." +msgstr "" +"Diese Einstellung ermöglicht es externen XMPP-Komponenten, sich mit dem " +"Server zu verbinden. Standardmäßig erlaubt diese Option **nur Verbindungen " +"von localhost-Komponenten**. Sie müssen den Wert \"{{% livechat_label " +"prosody_components_interfaces_label %}}\" ändern, um an anderen " +"Netzwerkschnittstellen zu lauschen." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md msgid "This feature could be used to connect bridges or bots." -msgstr "Diese Funktion könnte für die Verbindung von Brücken oder Bots genutzt werden." +msgstr "" +"Diese Funktion könnte für die Verbindung von Brücken oder Bots genutzt " +"werden." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "More informations on Prosody external components [here](https://prosody.im/doc/components)." -msgstr "Weitere Informationen zu den externen Komponenten von Prosody finden Sie [hier](https://prosody.im/doc/components)." +msgid "" +"More informations on Prosody external components [here](https://prosody.im/" +"doc/components)." +msgstr "" +"Weitere Informationen zu den externen Komponenten von Prosody finden Sie " +"[hier](https://prosody.im/doc/components)." #. type: Plain text #: build/documentation/pot_in/documentation/admin/settings.md -msgid "For more information, please check [the documentation](/peertube-plugin-livechat/documentation/admin/mod_firewall/)." -msgstr "Weitere Informationen finden Sie in [der Dokumentation](/peertube-plugin-livechat/de/documentation/admin/mod_firewall/)." +msgid "" +"For more information, please check [the documentation](/peertube-plugin-" +"livechat/documentation/admin/mod_firewall/)." +msgstr "" +"Weitere Informationen finden Sie in [der Dokumentation](/peertube-plugin-" +"livechat/de/documentation/admin/mod_firewall/)." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/_index.md @@ -2348,13 +3688,22 @@ msgstr "Bekannte Probleme: CPU Kompatibilität" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "The Prosody AppImage included in the plugin will only work on x86_64 and arm64 CPU. It is not compatible with other CPU architectures." -msgstr "Das im Plugin enthaltene Prosody AppImage funktioniert nur mit x86_64 und arm64 CPU Architekturen. Es ist nicht kompatibel mit anderen CPU-Architekturen." +msgid "" +"The Prosody AppImage included in the plugin will only work on x86_64 and " +"arm64 CPU. It is not compatible with other CPU architectures." +msgstr "" +"Das im Plugin enthaltene Prosody AppImage funktioniert nur mit x86_64 und " +"arm64 CPU Architekturen. Es ist nicht kompatibel mit anderen CPU-" +"Architekturen." #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "To use the plugin, you will have to manually install Prosody on your server (see below)." -msgstr "Um das Plugin zu verwenden, müssen Sie Prosody manuell auf Ihrem Server installieren (siehe unten)." +msgid "" +"To use the plugin, you will have to manually install Prosody on your server " +"(see below)." +msgstr "" +"Um das Plugin zu verwenden, müssen Sie Prosody manuell auf Ihrem Server " +"installieren (siehe unten)." #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -2368,8 +3717,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "Once it is done, you have to check `Use system Prosody` in the plugin settings." -msgstr "Sobald dies geschehen ist, müssen Sie in den Plugin-Einstellungen das Häkchen bei `Use system Prosody` setzen." +msgid "" +"Once it is done, you have to check `Use system Prosody` in the plugin " +"settings." +msgstr "" +"Sobald dies geschehen ist, müssen Sie in den Plugin-Einstellungen das " +"Häkchen bei `Use system Prosody` setzen." #. type: Title ## #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -2379,8 +3732,12 @@ msgstr "Nicht-Docker Peertube installation" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "For standard installation, you just have to install the official `prosody` package for your linux distribution." -msgstr "Für die Standardinstallation müssen Sie nur das offizielle `prosody`-Paket für Ihre Linux-Distribution installieren." +msgid "" +"For standard installation, you just have to install the official `prosody` " +"package for your linux distribution." +msgstr "" +"Für die Standardinstallation müssen Sie nur das offizielle `prosody`-Paket " +"für Ihre Linux-Distribution installieren." #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -2395,8 +3752,16 @@ msgstr "sudo apt install prosody\n" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "You can then disable the service that starts automatically when you install Prosody (the plugin will launch a Prosody process, there is no need for the service to run). For example, on Debian/Ubuntu (and other Systemd based linux distributions):" -msgstr "Sie können dann den Dienst deaktivieren, der automatisch startet, wenn Sie Prosody installieren (das Plugin startet einen Prosody-Prozess, der Dienst muss nicht dauerhaft laufen). Zum Beispiel unter Debian/Ubuntu (und anderen Systemd-basierten Linux-Distributionen):" +msgid "" +"You can then disable the service that starts automatically when you install " +"Prosody (the plugin will launch a Prosody process, there is no need for the " +"service to run). For example, on Debian/Ubuntu (and other Systemd based " +"linux distributions):" +msgstr "" +"Sie können dann den Dienst deaktivieren, der automatisch startet, wenn Sie " +"Prosody installieren (das Plugin startet einen Prosody-Prozess, der Dienst " +"muss nicht dauerhaft laufen). Zum Beispiel unter Debian/Ubuntu (und anderen " +"Systemd-basierten Linux-Distributionen):" #. type: Fenced code block (bash) #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -2406,8 +3771,12 @@ msgstr "sudo systemctl disable prosody && sudo systemctl stop prosody\n" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "Warning: do not disable Prosody if it is used for another service on your server, like for example Jitsi." -msgstr "Achtung: Deaktivieren Sie Prosody nicht, wenn es für einen anderen Dienst auf Ihrem Server verwendet wird, wie zum Beispiel Jitsi." +msgid "" +"Warning: do not disable Prosody if it is used for another service on your " +"server, like for example Jitsi." +msgstr "" +"Achtung: Deaktivieren Sie Prosody nicht, wenn es für einen anderen Dienst " +"auf Ihrem Server verwendet wird, wie zum Beispiel Jitsi." #. type: Title ## #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -2417,13 +3786,25 @@ msgstr "Docker" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "You will have to generate a Peertube image that includes Prosody in the same container that Peertube. I know this is not the standard way to do this with Docker, but keep in mind it is a temporary workaround." -msgstr "Sie müssen ein Peertube-Image generieren, das Prosody in demselben Container enthält, der auch Peertube beinhaltet. Ich weiß, dass dies nicht der Standardweg ist, um dies mit Docker zu tun, aber bedenken Sie, dass eine vorübergehende Lösung ist." +msgid "" +"You will have to generate a Peertube image that includes Prosody in the same " +"container that Peertube. I know this is not the standard way to do this " +"with Docker, but keep in mind it is a temporary workaround." +msgstr "" +"Sie müssen ein Peertube-Image generieren, das Prosody in demselben Container " +"enthält, der auch Peertube beinhaltet. Ich weiß, dass dies nicht der " +"Standardweg ist, um dies mit Docker zu tun, aber bedenken Sie, dass eine " +"vorübergehende Lösung ist." #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "To generate and use such an image, please refer to the Docker documentation. The Docker file to generate the image should be:" -msgstr "Um ein solches Image zu erzeugen und zu verwenden, lesen Sie bitte die Docker-Dokumentation. Die Docker-Datei, um das Paket zu erzeugen, sollte wie folgt sein:" +msgid "" +"To generate and use such an image, please refer to the Docker " +"documentation. The Docker file to generate the image should be:" +msgstr "" +"Um ein solches Image zu erzeugen und zu verwenden, lesen Sie bitte die " +"Docker-Dokumentation. Die Docker-Datei, um das Paket zu erzeugen, sollte wie " +"folgt sein:" #. type: Fenced code block (Docker) #: support/documentation/content/en/documentation/installation/cpu_compatibility.md @@ -2445,18 +3826,33 @@ msgstr "Yunohost" #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "You have to disable `metronome` (the XMPP server provided by Yunohost), and install `prosody`." -msgstr "Sie müssen `metronome` (der von Yunohost bereitgestellte XMPP-Server) deaktivieren, und `prosody` installieren." +msgid "" +"You have to disable `metronome` (the XMPP server provided by Yunohost), and " +"install `prosody`." +msgstr "" +"Sie müssen `metronome` (der von Yunohost bereitgestellte XMPP-Server) " +"deaktivieren, und `prosody` installieren." #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "This is already done by the Yunohost Peertube application, as it was required for the plugin before the v6.0.0." -msgstr "Dies wird bereits von der Yunohost Peertube Anwendung gemacht, da es für das Plugin vor v6.0.0 erforderlich war." +msgid "" +"This is already done by the Yunohost Peertube application, as it was " +"required for the plugin before the v6.0.0." +msgstr "" +"Dies wird bereits von der Yunohost Peertube Anwendung gemacht, da es für das " +"Plugin vor v6.0.0 erforderlich war." #. type: Plain text #: support/documentation/content/en/documentation/installation/cpu_compatibility.md -msgid "But it may be removed in a near feature (to avoid drawbacks of this method). I have to discuss with Yunohost team, to decide how we can do to minimize drawbacks, and maximize compatibility." -msgstr "Es kann aber sein, dass es in naher Zukunft entfernt wird (um die Nachteile dieser Methode zu vermeiden). Ich muss mit dem Yunohost Team diskutieren, um zu entscheiden, wie wir die Nachteile minimieren können, und die Kompatibilität zu maximieren." +msgid "" +"But it may be removed in a near feature (to avoid drawbacks of this " +"method). I have to discuss with Yunohost team, to decide how we can do to " +"minimize drawbacks, and maximize compatibility." +msgstr "" +"Es kann aber sein, dass es in naher Zukunft entfernt wird (um die Nachteile " +"dieser Methode zu vermeiden). Ich muss mit dem Yunohost Team diskutieren, um " +"zu entscheiden, wie wir die Nachteile minimieren können, und die " +"Kompatibilität zu maximieren." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/_index.md @@ -2473,13 +3869,24 @@ msgstr "Installationsanleitung" #. type: Plain text #: support/documentation/content/en/documentation/installation/_index.md #: support/documentation/content/en/_index.md -msgid "Before updating to a major release, please read the release notes and breaking changes list : [CHANGELOG](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md)." -msgstr "Bevor Sie auf eine Hauptversion aktualisieren, lesen Sie bitte die Versionshinweise und die Liste der wichtigsten Änderungen : [CHANGELOG](https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/CHANGELOG.md)." +msgid "" +"Before updating to a major release, please read the release notes and " +"breaking changes list : [CHANGELOG](https://github.com/JohnXLivingston/" +"peertube-plugin-livechat/blob/main/CHANGELOG.md)." +msgstr "" +"Bevor Sie auf eine Hauptversion aktualisieren, lesen Sie bitte die " +"Versionshinweise und die Liste der wichtigsten Änderungen : [CHANGELOG]" +"(https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/" +"CHANGELOG.md)." #. type: Plain text #: support/documentation/content/en/documentation/installation/_index.md -msgid "To install or update the plugin, **just use the Peertube web admin interface**." -msgstr "Um das Plugin zu installieren oder zu aktualisieren **einfach das Peertube Web-Admin-Interface benutzen**." +msgid "" +"To install or update the plugin, **just use the Peertube web admin " +"interface**." +msgstr "" +"Um das Plugin zu installieren oder zu aktualisieren **einfach das Peertube " +"Web-Admin-Interface benutzen**." #. type: Plain text #: support/documentation/content/en/documentation/installation/_index.md @@ -2500,8 +3907,15 @@ msgstr "Ich habe das Plugin gerade installiert/aktualisiert, aber es passiert ni #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "If you have just installed/upgraded the plugin, but nothing happens (no chat, no settings, buttons in the settings page does not work, ...), just try to reload the page." -msgstr "Wenn Sie das Plugin gerade installiert/aktualisiert haben, aber nichts passiert (kein Chat, keine Einstellungen, Schaltflächen auf der Einstellungsseite funktionieren nicht, ...), versuchen Sie einfach, die Seite neu zu laden." +msgid "" +"If you have just installed/upgraded the plugin, but nothing happens (no " +"chat, no settings, buttons in the settings page does not work, ...), just " +"try to reload the page." +msgstr "" +"Wenn Sie das Plugin gerade installiert/aktualisiert haben, aber nichts " +"passiert (kein Chat, keine Einstellungen, Schaltflächen auf der " +"Einstellungsseite funktionieren nicht, ...), versuchen Sie einfach, die " +"Seite neu zu laden." #. type: Title ## #: support/documentation/content/en/documentation/installation/troubleshooting.md @@ -2511,35 +3925,54 @@ msgstr "Diagnosewerkzeug" #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "If the chat does not work, there is a diagnostic tool in the plugin's settings pages." -msgstr "Wenn der Chat nicht funktioniert, gibt es ein Diagnosetool auf den Einstellungsseiten des Plugins." +msgid "" +"If the chat does not work, there is a diagnostic tool in the plugin's " +"settings pages." +msgstr "" +"Wenn der Chat nicht funktioniert, gibt es ein Diagnosetool auf den " +"Einstellungsseiten des Plugins." #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "Open the plugin settings, and click on the \"launch diagnostic\" button." -msgstr "Öffnen Sie die Plugin-Einstellungen, und klicken Sie auf die Schaltfläche \"Diagnose starten\"." +msgid "" +"Open the plugin settings, and click on the \"launch diagnostic\" button." +msgstr "" +"Öffnen Sie die Plugin-Einstellungen, und klicken Sie auf die Schaltfläche " +"\"Diagnose starten\"." #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "![Screenshot of the plugin's settings page, with a \"launch diagnostic\" button.](/peertube-plugin-livechat/images/launch_diagnostic.png?classes=shadow,border&height=200px \"Launch diagnostic\")" +msgid "" +"![Screenshot of the plugin's settings page, with a \"launch diagnostic\" " +"button.](/peertube-plugin-livechat/images/launch_diagnostic.png?" +"classes=shadow,border&height=200px \"Launch diagnostic\")" msgstr "" "![Screenshot der Einstellungsseite des Plugins, mit einer Schaltfläche " -"\"Diagnose starten\".](/peertube-plugin-livechat/images/" -"launch_diagnostic.png?classes=shadow,border&height=200px \"Diagnose starten\"" -")" +"\"Diagnose starten\".](/peertube-plugin-livechat/images/launch_diagnostic." +"png?classes=shadow,border&height=200px \"Diagnose starten\")" #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "If there is any error in the diagnostic page, you can search in this page for a solution, or refer to the [Bug tracking documentation page](/peertube-plugin-livechat/issues/) if you can't find any response." -msgstr "Wenn auf der Diagnoseseite ein Fehler auftritt, können Sie auf dieser Seite nach einer Lösung suchen oder auf der [Bugtracking Dokumentationsseite](/peertube-plugin-livechat/de/issues/) nachsehen, wenn Sie keine Antwort finden." +msgid "" +"If there is any error in the diagnostic page, you can search in this page " +"for a solution, or refer to the [Bug tracking documentation page](/peertube-" +"plugin-livechat/issues/) if you can't find any response." +msgstr "" +"Wenn auf der Diagnoseseite ein Fehler auftritt, können Sie auf dieser Seite " +"nach einer Lösung suchen oder auf der [Bugtracking Dokumentationsseite](/" +"peertube-plugin-livechat/de/issues/) nachsehen, wenn Sie keine Antwort " +"finden." #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "![Screenshot of the diagnostic result page. This gives a lot of information, with status for different test suites.](/peertube-plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px \"Diagnostic result\")" +msgid "" +"![Screenshot of the diagnostic result page. This gives a lot of information, " +"with status for different test suites.](/peertube-plugin-livechat/images/" +"diagnostic.png?classes=shadow,border&height=200px \"Diagnostic result\")" msgstr "" "![Screenshot der Seite mit den Diagnoseergebnissen. Dies gibt eine Menge " -"Informationen, mit Status für verschiedene Testsuiten.](/peertube-" -"plugin-livechat/images/diagnostic.png?classes=shadow,border&height=200px " +"Informationen, mit Status für verschiedene Testsuiten.](/peertube-plugin-" +"livechat/images/diagnostic.png?classes=shadow,border&height=200px " "\"Diagnoseergebnisse\")" #. type: Title ## @@ -2562,13 +3995,26 @@ msgstr "In manchen Fällen (z. B. bei einer Docker-Peertube-Installation) zeigen #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "In such case, try changing the \"{{% livechat_label prosody_peertube_uri_label %}}\" settings, by setting `http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, ask your instance administrators if you don't know)." -msgstr "Versuchen Sie in diesem Fall, die \"{{% livechat_label prosody_peertube_uri_label %}}\" Einstellungen zu ändern, indem Sie `http://127.0.0.1:9000` einstellen (unter der Annahme, dass 9000 der Port ist, auf dem Peertube lauscht, fragen Sie Ihre Instanzadministratoren, wenn Sie es nicht wissen)." +msgid "" +"In such case, try changing the \"{{% livechat_label " +"prosody_peertube_uri_label %}}\" settings, by setting " +"`http://127.0.0.1:9000` (assuming 9000 is the port on which Peertube listen, " +"ask your instance administrators if you don't know)." +msgstr "" +"Versuchen Sie in diesem Fall, die \"{{% livechat_label " +"prosody_peertube_uri_label %}}\" Einstellungen zu ändern, indem Sie " +"`http://127.0.0.1:9000` einstellen (unter der Annahme, dass 9000 der Port " +"ist, auf dem Peertube lauscht, fragen Sie Ihre Instanzadministratoren, wenn " +"Sie es nicht wissen)." #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "Check the help for [this setting](/peertube-plugin-livechat/documentation/admin/settings/) for more information." -msgstr "Weitere Informationen finden Sie in der Hilfe für [diese Einstellung](/peertube-plugin-livechat/de/documentation/admin/settings/)." +msgid "" +"Check the help for [this setting](/peertube-plugin-livechat/documentation/" +"admin/settings/) for more information." +msgstr "" +"Weitere Informationen finden Sie in der Hilfe für [diese Einstellung](/" +"peertube-plugin-livechat/de/documentation/admin/settings/)." #. type: Title ### #: support/documentation/content/en/documentation/installation/troubleshooting.md @@ -2578,18 +4024,48 @@ msgstr "Websocket" #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "If everything is fine in the diagnostic tools, but chat windows remains empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are some additional configuration to do on the server side. Check with the instance administrators that they did not forgot to apply changes listed in the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500)." -msgstr "Wenn in den Diagnosetools alles in Ordnung ist, aber die Chat-Fenster leer bleiben: Es kann ein Websocket-Problem sein. Seit Peertube Version 5.0.0 müssen einige zusätzliche Konfigurationen auf der Serverseite vorgenommen werden. Vergewissern Sie sich bei den Instanzadministratoren, dass sie nicht vergessen haben, die in den [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500) aufgeführten Änderungen anzuwenden." +msgid "" +"If everything is fine in the diagnostic tools, but chat windows remains " +"empty: it can be a Websocket issue. Since Peertube version 5.0.0, there are " +"some additional configuration to do on the server side. Check with the " +"instance administrators that they did not forgot to apply changes listed in " +"the [Peertube v5.0.0 release notes](https://github.com/Chocobozzz/PeerTube/" +"blob/master/CHANGELOG.md#v500)." +msgstr "" +"Wenn in den Diagnosetools alles in Ordnung ist, aber die Chat-Fenster leer " +"bleiben: Es kann ein Websocket-Problem sein. Seit Peertube Version 5.0.0 " +"müssen einige zusätzliche Konfigurationen auf der Serverseite vorgenommen " +"werden. Vergewissern Sie sich bei den Instanzadministratoren, dass sie " +"nicht vergessen haben, die in den [Peertube v5.0.0 release notes](https://" +"github.com/Chocobozzz/PeerTube/blob/master/CHANGELOG.md#v500) aufgeführten " +"Änderungen anzuwenden." #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "You can confirm that it is a Websocket issue by opening your browser console, and checking for error logs talking about failed Websocket connection." -msgstr "Sie können bestätigen, dass es sich um ein Websocket-Problem handelt, indem Sie Ihre Browserkonsole öffnen und nach Fehlerprotokollen suchen, in denen von einer fehlgeschlagenen Websocket-Verbindung die Rede ist." +msgid "" +"You can confirm that it is a Websocket issue by opening your browser " +"console, and checking for error logs talking about failed Websocket " +"connection." +msgstr "" +"Sie können bestätigen, dass es sich um ein Websocket-Problem handelt, indem " +"Sie Ihre Browserkonsole öffnen und nach Fehlerprotokollen suchen, in denen " +"von einer fehlgeschlagenen Websocket-Verbindung die Rede ist." #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md -msgid "If you can't fix this immediatly, you can disable Websocket by unchecking \"{{% livechat_label disable_websocket_label %}}\" in the plugin setting page. In such case, you should also check \"{{% livechat_label federation_dont_publish_remotely_label %}}\", as chat federation won't work without Websocket." -msgstr "Wenn Sie dies nicht sofort beheben können, können Sie Websocket deaktivieren, indem Sie das Häkchen bei \"{{% livechat_label disable_websocket_label %}}\" auf der Plugin Einstellungsseite entfernen. In diesem Fall sollten Sie auch das Häkchen bei \"{{% livechat_label federation_dont_publish_remotely_label %}}\" setzen, da die Chat-Föderation ohne Websocket nicht funktioniert." +msgid "" +"If you can't fix this immediatly, you can disable Websocket by unchecking " +"\"{{% livechat_label disable_websocket_label %}}\" in the plugin setting " +"page. In such case, you should also check \"{{% livechat_label " +"federation_dont_publish_remotely_label %}}\", as chat federation won't work " +"without Websocket." +msgstr "" +"Wenn Sie dies nicht sofort beheben können, können Sie Websocket " +"deaktivieren, indem Sie das Häkchen bei \"{{% livechat_label " +"disable_websocket_label %}}\" auf der Plugin Einstellungsseite entfernen. " +"In diesem Fall sollten Sie auch das Häkchen bei \"{{% livechat_label " +"federation_dont_publish_remotely_label %}}\" setzen, da die Chat-Föderation " +"ohne Websocket nicht funktioniert." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md @@ -2611,18 +4087,29 @@ msgstr "WICHTIGER HINWEIS" #. type: Plain text #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md -msgid "Since version v6.0.0, this plugin does not need any Prosody installation." -msgstr "Seit Version v6.0.0 benötigt dieses Plugin keine andere Prosody-Installation." +msgid "" +"Since version v6.0.0, this plugin does not need any Prosody installation." +msgstr "" +"Seit Version v6.0.0 benötigt dieses Plugin keine andere Prosody-Installation." #. type: Plain text #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md -msgid "If you were using this plugin before this version, and if you had installed Prosody manually, you can safely uninstall Prosody." -msgstr "Falls Sie dieses Plugin vor dieser Version benutzt haben und Sie Prosody manuell installiert haben, können Sie Prosody sicher deinstallieren." +msgid "" +"If you were using this plugin before this version, and if you had installed " +"Prosody manually, you can safely uninstall Prosody." +msgstr "" +"Falls Sie dieses Plugin vor dieser Version benutzt haben und Sie Prosody " +"manuell installiert haben, können Sie Prosody sicher deinstallieren." #. type: Plain text #: support/documentation/content/en/documentation/installation/upgrade_before_6.0.0.md -msgid "If you were using the custom Peertube docker image that is embedding Prosody, you can switch back to the official Peertube image." -msgstr "Falls Sie ein eigenes Peertube Docker Paket genutzt haben, welches Prosody eingebettet hatte, können Sie zu den offiziellen Peertube Paketen zurück wechseln." +msgid "" +"If you were using the custom Peertube docker image that is embedding " +"Prosody, you can switch back to the official Peertube image." +msgstr "" +"Falls Sie ein eigenes Peertube Docker Paket genutzt haben, welches Prosody " +"eingebettet hatte, können Sie zu den offiziellen Peertube Paketen zurück " +"wechseln." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/_index.md @@ -2650,8 +4137,15 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "[OBS](https://obsproject.com) is a popular Free And Open Source streaming software, with advanced capacities for your live streams. In the current page, you will find some advices to handle your live chats using OBS." -msgstr "[OBS](https://obsproject.com) ist eine beliebte kostenlose and quellcodeoffene Streaming Software, mit erweiterten Funktionen für Ihre Live-Streams. Auf dieser Seite finden Sie einige Ratschläge, wie Sie Ihre Live-Chats mit OBS verwalten können." +msgid "" +"[OBS](https://obsproject.com) is a popular Free And Open Source streaming " +"software, with advanced capacities for your live streams. In the current " +"page, you will find some advices to handle your live chats using OBS." +msgstr "" +"[OBS](https://obsproject.com) ist eine beliebte kostenlose and " +"quellcodeoffene Streaming Software, mit erweiterten Funktionen für Ihre Live-" +"Streams. Auf dieser Seite finden Sie einige Ratschläge, wie Sie Ihre Live-" +"Chats mit OBS verwalten können." #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md @@ -2667,7 +4161,11 @@ msgstr "Sie können den Chat ganz einfach in Ihren Videostream integrieren." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/intro/_index.md -msgid "![Screenshot of a Peertube live, replay, with the chat included at the bottom of the video stream.](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px \"Embeding the chat in a live stream\")" +msgid "" +"![Screenshot of a Peertube live, replay, with the chat included at the " +"bottom of the video stream.](/peertube-plugin-livechat/images/" +"embed_chat_in_livestream.png?classes=shadow,border&height=200px \"Embeding " +"the chat in a live stream\")" msgstr "" "![Screenshot einer Peertube Live-Übertragung, bei der der Chat am unteren " "Ende des Video-Streams eingebettet ist.](/peertube-plugin-livechat/images/" @@ -2676,18 +4174,31 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the \"{{% livechat_label share_chat_link %}}\" feature to generate an URL to your chat. This button should be near the chat if you are the video owner (unless it was desactivated by your server admins)." -msgstr "Sie können die Funktion \"{{% livechat_label share_chat_link %}}\" verwenden, um eine URL zu Ihrem Chat zu generieren. Diese Schaltfläche sollte sich in der Nähe des Chats befinden, wenn Sie der Videoeigentümer sind (es sei denn, sie wurde von Ihren Serveradministratoren deaktiviert)." +msgid "" +"You can use the \"{{% livechat_label share_chat_link %}}\" feature to " +"generate an URL to your chat. This button should be near the chat if you " +"are the video owner (unless it was desactivated by your server admins)." +msgstr "" +"Sie können die Funktion \"{{% livechat_label share_chat_link %}}\" " +"verwenden, um eine URL zu Ihrem Chat zu generieren. Diese Schaltfläche " +"sollte sich in der Nähe des Chats befinden, wenn Sie der Videoeigentümer " +"sind (es sei denn, sie wurde von Ihren Serveradministratoren deaktiviert)." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md msgid "Check the \"{{% livechat_label read_only %}}\" checkbox in the modal." -msgstr "Aktivieren Sie das Kontrollkästchen \"{{% livechat_label read_only %}}\" im Fenster." +msgstr "" +"Aktivieren Sie das Kontrollkästchen \"{{% livechat_label read_only %}}\" im " +"Fenster." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, where the \"{{% livechat_label read_only %}}\" option is checked.](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px \"Share link popup\")" +msgid "" +"![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, where " +"the \"{{% livechat_label read_only %}}\" option is checked.](/peertube-" +"plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px " +"\"Share link popup\")" msgstr "" "![Screenshot des \"{{% livechat_label share_chat_link %}}\"-Dialogs, in dem " "die Option \"{{% livechat_label read_only %}}\" aktiviert ist](/peertube-" @@ -2702,17 +4213,27 @@ msgstr "Verwenden Sie dann diesen Link als \"Webbrowser-Quelle\" in OBS." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/intro/_index.md -msgid "![Screenshot of the OBS software, where the chat was added as web browser source.](/peertube-plugin-livechat/images/embed_chat_in_obs.png?classes=shadow,border&height=200px \"Embeding the chat in OBS\")" +msgid "" +"![Screenshot of the OBS software, where the chat was added as web browser " +"source.](/peertube-plugin-livechat/images/embed_chat_in_obs.png?" +"classes=shadow,border&height=200px \"Embeding the chat in OBS\")" msgstr "" "![Screenshot der OBS-Software, wo der Chat als Webbrowser-Quelle hinzugefügt " -"wurde.](/peertube-plugin-livechat/images/" -"embed_chat_in_obs.png?classes=shadow,border&height=200px \"Den Chat in OBS " -"einbetten\")" +"wurde.](/peertube-plugin-livechat/images/embed_chat_in_obs.png?" +"classes=shadow,border&height=200px \"Den Chat in OBS einbetten\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the \"{{% livechat_label transparent_background %}}\" option to have a transparent background in OBS. If you want to customize the background transparency, you can add this CSS in your OBS browser source's settings:" -msgstr "Sie können die \"{{% livechat_label transparent_background %}}\" Option verwenden, um einen transparenten Hintergrund in OBS zu erhalten. Wenn Sie die Hintergrundtransparenz anpassen möchten, können Sie dieses CSS in den Einstellungen Ihrer OBS-Browserquelle hinzufügen:" +msgid "" +"You can use the \"{{% livechat_label transparent_background %}}\" option to " +"have a transparent background in OBS. If you want to customize the " +"background transparency, you can add this CSS in your OBS browser source's " +"settings:" +msgstr "" +"Sie können die \"{{% livechat_label transparent_background %}}\" Option " +"verwenden, um einen transparenten Hintergrund in OBS zu erhalten. Wenn Sie " +"die Hintergrundtransparenz anpassen möchten, können Sie dieses CSS in den " +"Einstellungen Ihrer OBS-Browserquelle hinzufügen:" #. type: Fenced code block (css) #: support/documentation/content/en/documentation/user/obs.md @@ -2725,13 +4246,26 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "In the previous CSS snippet, you can of course change the color or the transparency, by adapting the color values." -msgstr "Im vorherigen CSS-Schnipsel können Sie natürlich die Farbe oder die Transparenz ändern, indem Sie die Farbwerte anpassen." +msgid "" +"In the previous CSS snippet, you can of course change the color or the " +"transparency, by adapting the color values." +msgstr "" +"Im vorherigen CSS-Schnipsel können Sie natürlich die Farbe oder die " +"Transparenz ändern, indem Sie die Farbwerte anpassen." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Note: you can entirely customize chat colors. This is undocumented yet, but you can try this: in the modal, check «use curent theme colors», then you can try to manually change color values in the URL. You must use valid CSS color values, and they must be properly URL encoded." -msgstr "Hinweis: Sie können vollständig die Chat-Farben anpassen. Dies ist noch nicht dokumentiert, aber Sie können dies versuchen: Aktivieren Sie im Fenster die Option \"Aktuelle Themenfarben verwenden\", und versuchen Sie dann, die Farbwerte in der URL manuell zu ändern. Sie müssen gültige CSS-Farbwerte verwenden, und diese müssen in der URL korrekt kodiert sein." +msgid "" +"Note: you can entirely customize chat colors. This is undocumented yet, but " +"you can try this: in the modal, check «use curent theme colors», then you " +"can try to manually change color values in the URL. You must use valid CSS " +"color values, and they must be properly URL encoded." +msgstr "" +"Hinweis: Sie können vollständig die Chat-Farben anpassen. Dies ist noch " +"nicht dokumentiert, aber Sie können dies versuchen: Aktivieren Sie im " +"Fenster die Option \"Aktuelle Themenfarben verwenden\", und versuchen Sie " +"dann, die Farbwerte in der URL manuell zu ändern. Sie müssen gültige CSS-" +"Farbwerte verwenden, und diese müssen in der URL korrekt kodiert sein." #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md @@ -2739,93 +4273,147 @@ msgstr "Hinweis: Sie können vollständig die Chat-Farben anpassen. Dies ist noc msgid "OBS Dock" msgstr "OBS Dock" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 10.1.0 verfügbar sein." - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md msgid "This feature can be disabled by the instance's adminitrators." -msgstr "Diese Funktion kann von den Administratoren der Instanz deaktiviert werden." +msgstr "" +"Diese Funktion kann von den Administratoren der Instanz deaktiviert werden." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use OBS \"Custom browser docks\" to integrate the chat in your OBS while you are streaming. The livechat plugin offers a way to create long term token that can identify you automatically to join the chat, so you don't have to enter your password in OBS." -msgstr "Sie können OBS \"Benutzerdefinierte Browser-Docks\" verwenden, um den Chat in OBS zu integrieren, während Sie streamen. Das Livechat-Plugin bietet eine Möglichkeit, ein langfristiges Token zu erstellen, das Sie automatisch identifiziert, um dem Chat beizutreten, so dass Sie Ihr Passwort nicht in OBS eingeben müssen." +msgid "" +"You can use OBS \"Custom browser docks\" to integrate the chat in your OBS " +"while you are streaming. The livechat plugin offers a way to create long " +"term token that can identify you automatically to join the chat, so you " +"don't have to enter your password in OBS." +msgstr "" +"Sie können OBS \"Benutzerdefinierte Browser-Docks\" verwenden, um den Chat " +"in OBS zu integrieren, während Sie streamen. Das Livechat-Plugin bietet " +"eine Möglichkeit, ein langfristiges Token zu erstellen, das Sie automatisch " +"identifiziert, um dem Chat beizutreten, so dass Sie Ihr Passwort nicht in " +"OBS eingeben müssen." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "To do so, just use the \"{{% livechat_label share_chat_link %}}\" feature, and open the \"{{% livechat_label share_chat_dock %}}\" tab. From there, you can create a new token using the \"+\" button." -msgstr "Verwenden Sie dazu einfach die \"{{% livechat_label share_chat_link %}}\" Funktion, und öffnen Sie die Registerkarte \"{{% livechat_label share_chat_dock %}}\". Von dort aus können Sie mit der Schaltfläche \"+\" ein neuen Token erstellen." +msgid "" +"To do so, just use the \"{{% livechat_label share_chat_link %}}\" feature, " +"and open the \"{{% livechat_label share_chat_dock %}}\" tab. From there, " +"you can create a new token using the \"+\" button." +msgstr "" +"Verwenden Sie dazu einfach die \"{{% livechat_label share_chat_link %}}\" " +"Funktion, und öffnen Sie die Registerkarte \"{{% livechat_label " +"share_chat_dock %}}\". Von dort aus können Sie mit der Schaltfläche \"+\" " +"ein neuen Token erstellen." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, on the \"{{% livechat_label share_chat_dock %}} tab. A token was generated, and is selectionable.\"](/peertube-plugin-livechat/images/share_dock.png?classes=shadow,border&height=200px \"Share link popup - dock tab\")" +msgid "" +"![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, on " +"the \"{{% livechat_label share_chat_dock %}} tab. A token was generated, and " +"is selectionable.\"](/peertube-plugin-livechat/images/share_dock.png?" +"classes=shadow,border&height=200px \"Share link popup - dock tab\")" msgstr "" "![Screenshot des \"{{% livechat_label share_chat_link %}}\"-Dialogs auf der " "Registerkarte \"{{% livechat_label share_chat_dock %}}\". Ein Token wurde " -"generiert und ist auswählbar.\"](/peertube-plugin-livechat/images/" -"share_dock.png?classes=shadow,border&height=200px \"Link teilen popup - Dock " +"generiert und ist auswählbar.\"](/peertube-plugin-livechat/images/share_dock." +"png?classes=shadow,border&height=200px \"Link teilen popup - Dock " "Registerkarte\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Then, copy the url, and use the \"Docks / Custom browser docks\" menu from your OBS to add a dock with this URL." -msgstr "Kopieren Sie dann die URL und verwenden Sie das Menü \"Docks / Benutzerdefinierte Browser-Docks\" in Ihrem OBS, um ein Dock mit dieser URL hinzuzufügen." +msgid "" +"Then, copy the url, and use the \"Docks / Custom browser docks\" menu from " +"your OBS to add a dock with this URL." +msgstr "" +"Kopieren Sie dann die URL und verwenden Sie das Menü \"Docks / " +"Benutzerdefinierte Browser-Docks\" in Ihrem OBS, um ein Dock mit dieser URL " +"hinzuzufügen." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "![Screenshot of the OBS Dock menu, with a \"Custom Browser Docks\" entry.](/peertube-plugin-livechat/images/obs_dock_menu.png?classes=shadow,border&height=200px \"OBS - Dock menu\")" +msgid "" +"![Screenshot of the OBS Dock menu, with a \"Custom Browser Docks\" entry.](/" +"peertube-plugin-livechat/images/obs_dock_menu.png?classes=shadow," +"border&height=200px \"OBS - Dock menu\")" msgstr "" "![Screenshot des OBS Dock Menüs mit dem Eintrag \"Benutzerdefinierte Browser-" -"Docks\"](/peertube-plugin-livechat/images/" -"obs_dock_menu.png?classes=shadow,border&height=200px \"OBS - Dock menu\")" +"Docks\"](/peertube-plugin-livechat/images/obs_dock_menu.png?classes=shadow," +"border&height=200px \"OBS - Dock menu\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "![Screenshot of the OBS Custom Browser Docks dialog, with a new dock called \"My chat\".](/peertube-plugin-livechat/images/obs_dock_dialog.png?classes=shadow,border&height=200px \"OBS - Dock dialog\")" +msgid "" +"![Screenshot of the OBS Custom Browser Docks dialog, with a new dock called " +"\"My chat\".](/peertube-plugin-livechat/images/obs_dock_dialog.png?" +"classes=shadow,border&height=200px \"OBS - Dock dialog\")" msgstr "" "![Screenshot des OBS Custom Browser Docks Dialogs, mit einem neuen Dock " -"namens \"Mein Chat\"](/peertube-plugin-livechat/images/" -"obs_dock_dialog.png?classes=shadow,border&height=200px \"OBS - Dock Dialog\")" +"namens \"Mein Chat\"](/peertube-plugin-livechat/images/obs_dock_dialog.png?" +"classes=shadow,border&height=200px \"OBS - Dock Dialog\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Once you have done, you will have a new dock connected to the chat with your account." -msgstr "Danach haben Sie ein neues Dock, das mit dem Chat und Ihrem Konto verbunden ist." +msgid "" +"Once you have done, you will have a new dock connected to the chat with your " +"account." +msgstr "" +"Danach haben Sie ein neues Dock, das mit dem Chat und Ihrem Konto verbunden " +"ist." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "![Screenshot of OBS with a new dock including the chat. The user is logged in with their Peertube account, and can chat directly from OBS.](/peertube-plugin-livechat/images/obs_dock.png?classes=shadow,border&height=200px \"OBS - Dock\")" +msgid "" +"![Screenshot of OBS with a new dock including the chat. The user is logged " +"in with their Peertube account, and can chat directly from OBS.](/peertube-" +"plugin-livechat/images/obs_dock.png?classes=shadow,border&height=200px \"OBS " +"- Dock\")" msgstr "" "![Screenshot von OBS mit einem neuen Dock inklusive Chat. Der Nutzer ist mit " -"seinem Peertube-Account eingeloggt und kann direkt von OBS aus chatten" -".](/peertube-plugin-livechat/images/" -"obs_dock.png?classes=shadow,border&height=200px \"OBS - Dock\")" +"seinem Peertube-Account eingeloggt und kann direkt von OBS aus chatten.](/" +"peertube-plugin-livechat/images/obs_dock.png?classes=shadow," +"border&height=200px \"OBS - Dock\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Tokens are valid to join any chat room. You don't have to generate separate tokens for each of your rooms. You can also customize the nickame that will be used by changing the `n` parameter in the url." -msgstr "Die Token sind für die Teilnahme an jedem Chatraum gültig. Sie müssen nicht für jeden Ihrer Räume ein eigenes Token erstellen. Sie können auch den Spitznamen, der verwendet wird, anpassen, indem Sie den Parameter `n` in der URL ändern." +msgid "" +"Tokens are valid to join any chat room. You don't have to generate separate " +"tokens for each of your rooms. You can also customize the nickame that will " +"be used by changing the `n` parameter in the url." +msgstr "" +"Die Token sind für die Teilnahme an jedem Chatraum gültig. Sie müssen nicht " +"für jeden Ihrer Räume ein eigenes Token erstellen. Sie können auch den " +"Spitznamen, der verwendet wird, anpassen, indem Sie den Parameter `n` in der " +"URL ändern." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "Don't share these links to anyone, as it would allow them to connect as yourself." -msgstr "Geben Sie diese Links nicht weiter, da sie es anderen Personen ermöglichen würden, eine Verbindung mit Ihrem Konto herzustellen." +msgid "" +"Don't share these links to anyone, as it would allow them to connect as " +"yourself." +msgstr "" +"Geben Sie diese Links nicht weiter, da sie es anderen Personen ermöglichen " +"würden, eine Verbindung mit Ihrem Konto herzustellen." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md msgid "If a token is compromised, or no more needed, you can revoke them." -msgstr "Wenn ein Token kompromittiert ist oder nicht mehr benötigt wird, können Sie ihn widerrufen." +msgstr "" +"Wenn ein Token kompromittiert ist oder nicht mehr benötigt wird, können Sie " +"ihn widerrufen." #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "These tokens can be used for other purposes, as connecting to your account with XMPP bots or clients. This feature is not documented yet, and not officially supported. So use with care." -msgstr "Diese Token können für andere Zwecke verwendet werden, z. B. für die Verbindung mit XMPP-Bots oder -Clients zu Ihrem Konto. Diese Funktion ist noch nicht dokumentiert und wird offiziell nicht unterstützt. Verwenden Sie sie also mit Vorsicht." +msgid "" +"These tokens can be used for other purposes, as connecting to your account " +"with XMPP bots or clients. This feature is not documented yet, and not " +"officially supported. So use with care." +msgstr "" +"Diese Token können für andere Zwecke verwendet werden, z. B. für die " +"Verbindung mit XMPP-Bots oder -Clients zu Ihrem Konto. Diese Funktion ist " +"noch nicht dokumentiert und wird offiziell nicht unterstützt. Verwenden Sie " +"sie also mit Vorsicht." #. type: Title ## #: support/documentation/content/en/documentation/user/obs.md @@ -2835,8 +4423,131 @@ msgstr "Mischen mehrerer Chats in Ihrem Live-Stream" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md -msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." -msgstr "Sie können die [social_stream Browsererweiterung](https://github.com/steveseguin/social_stream#readme) verwenden, um mehrere Chat-Quellen (von Peertube, Twitch, Youtube, Facebook, ...) zu mischen und deren Inhalte in Ihren Live-Stream einzubinden. Die Kompatibilität mit diesem Plugin wurde in den letzten Versionen hinzugefügt." +msgid "" +"You can use the [social_stream browser extension](https://github.com/" +"steveseguin/social_stream#readme) to mix multiple chat source (from " +"Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your " +"live stream. The compatibility with this plugin was added in recent " +"versions." +msgstr "" +"Sie können die [social_stream Browsererweiterung](https://github.com/" +"steveseguin/social_stream#readme) verwenden, um mehrere Chat-Quellen (von " +"Peertube, Twitch, Youtube, Facebook, ...) zu mischen und deren Inhalte in " +"Ihren Live-Stream einzubinden. Die Kompatibilität mit diesem Plugin wurde in " +"den letzten Versionen hinzugefügt." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" +"Raumbesitzer und Administratoren können spezielle Ankündigungen in den Chat " +"senden." + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "Ankündigungen" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "Diese Meldungen sind deutlicher sichtbar als Standardmeldungen." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"To send announcements, owners and administrators will have a \"{{% " +"livechat_label announcements_message_type %}}\" selector on the top of the " +"message field:" +msgstr "" +"Um Ankündigungen zu senden, haben Besitzer und Administratoren einen \"{{% " +"livechat_label announcements_message_type %}}\"-Selektor am oberen Rand des " +"Nachrichtenfeldes:" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"![Screenshot of a chat session. On top of the message field, there is a " +"\"{{% livechat_label announcements_message_type %}}\" selector. In the chat, " +"we can see three types of announcements: a highlighted message, an " +"announcement, and a warning. Each of these announcements have a special " +"color to distinguish them. The announcement and the warning have also bold " +"titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow," +"border&height=400px \"Announcements\")" +msgstr "" +"![Screenshot einer Chatsitzung. Über dem Nachrichtenfeld befindet sich ein " +"Selektor \"{{% livechat_label announcements_message_type %}}\". Im Chat " +"werden drei Arten von Ankündigungen angezeigt: eine hervorgehobene " +"Nachricht, eine Ankündigung und eine Warnung. Jede dieser Ankündigungen hat " +"eine spezielle Farbe, um sie zu unterscheiden. Die Ankündigung und die " +"Warnung haben außerdem fette Titel](/peertube-plugin-livechat/images/" +"announcements.png?classes=shadow,border&height=400px \"Ankündigungen\")" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "Es gibt verschiedene Nachrichtentypen:" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"**{{% livechat_label announcements_message_type_standard %}}**: to send a " +"standard message." +msgstr "" +"**{{% livechat_label announcements_message_type_standard %}}**: zum Senden " +"einer Standardnachricht." + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"**{{% livechat_label announcements_message_type_highlight %}}**: these " +"messages will simply be highlighted in a blue box." +msgstr "" +"**{{% livechat_label announcements_message_type_highlight %}}**: diese " +"Nachrichten werden einfach in einem blauen Kasten hervorgehoben." + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"**{{% livechat_label announcements_message_type_announcement %}}**: these " +"messages will be in a green box, and a bold \"{{% livechat_label " +"announcements_message_type_announcement %}}\" title will be added." +msgstr "" +"**{{% livechat_label announcements_message_type_announcement %}}**: diese " +"Nachrichten werden in einem grünen Kasten angezeigt und ein fetter \"{{% " +"livechat_label announcements_message_type_announcement %}}\" Titel wird " +"hinzugefügt." + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"**{{% livechat_label announcements_message_type_warning %}}**: these " +"messages will be in a rend box, and a bold \"{{% livechat_label " +"announcements_message_type_announcement %}}\" title will be added." +msgstr "" +"**{{% livechat_label announcements_message_type_warning %}}**: diese " +"Nachrichten werden in einer roten Kästchen angezeigt, und ein fetter \"{{% " +"livechat_label announcements_message_type_announcement %}}\" Titel wird " +"hinzugefügt." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"User that are not owner or administrator of the chatroom can't send such " +"messages." +msgstr "" +"Benutzer, die nicht Eigentümer oder Administrator des Chatraums sind, können " +"keine solchen Nachrichten senden." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "" +"Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" +"Hinweis: Standard-XMPP-Clients zeigen Ankündigungen als Standardnachrichten " +"an." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2858,17 +4569,28 @@ msgstr "Aktivieren Sie den Chat für Ihre Live-Streams" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "Instance administrators can choose to disable or enable chat in specific cases. Information in this section are only true in the default case." -msgstr "Instanzadministratoren können den Chat in bestimmten Fällen deaktivieren oder aktivieren. Die Informationen in diesem Abschnitt gelten nur für den Standardfall." +msgid "" +"Instance administrators can choose to disable or enable chat in specific " +"cases. Information in this section are only true in the default case." +msgstr "" +"Instanzadministratoren können den Chat in bestimmten Fällen deaktivieren " +"oder aktivieren. Die Informationen in diesem Abschnitt gelten nur für den " +"Standardfall." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "When you create or modify a Peertube live, there is a \"plugin settings\" tab:" -msgstr "Wenn Sie eine Peertube Live-Stream erstellen oder ändern, gibt es eine Registerkarte \"Plugin-Einstellungen\":" +msgid "" +"When you create or modify a Peertube live, there is a \"plugin settings\" " +"tab:" +msgstr "" +"Wenn Sie eine Peertube Live-Stream erstellen oder ändern, gibt es eine " +"Registerkarte \"Plugin-Einstellungen\":" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "![Screenshot of the Peertube new live form.](/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px \"New live\")" +msgid "" +"![Screenshot of the Peertube new live form.](/peertube-plugin-livechat/" +"images/new_live.png?classes=shadow,border&height=200px \"New live\")" msgstr "" "![Screenshot des Peertube-Formulars für die Live-Übertragung (/peertube-" "plugin-livechat/images/new_live.png?classes=shadow,border&height=200px " @@ -2876,22 +4598,35 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat %}}\" checkbox. Just check or uncheck it to enable or disable the chat associated to your video." -msgstr "Auf der Registerkarte \"Plugin-Einstellungen\" gibt es ein Kontrollkästchen \"{{% livechat_label use_chat %}}\". Aktivieren oder deaktivieren Sie es einfach, um den mit Ihrem Video verbundenen Chat zu aktivieren oder zu deaktivieren." +msgid "" +"In the \"plugin settings\" tab, there is a \"{{% livechat_label use_chat " +"%}}\" checkbox. Just check or uncheck it to enable or disable the chat " +"associated to your video." +msgstr "" +"Auf der Registerkarte \"Plugin-Einstellungen\" gibt es ein Kontrollkästchen " +"\"{{% livechat_label use_chat %}}\". Aktivieren oder deaktivieren Sie es " +"einfach, um den mit Ihrem Video verbundenen Chat zu aktivieren oder zu " +"deaktivieren." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "![Screenshot of the form, with a \"{{% livechat_label use_chat %}}\" checkbox.](/peertube-plugin-livechat/images/new_live_activate_chat.png?classes=shadow,border&height=200px \"Activate the chat\")" +msgid "" +"![Screenshot of the form, with a \"{{% livechat_label use_chat %}}\" " +"checkbox.](/peertube-plugin-livechat/images/new_live_activate_chat.png?" +"classes=shadow,border&height=200px \"Activate the chat\")" msgstr "" "![Screenshot des Formulars mit dem Kontrollkästchen \"{{% livechat_label " -"use_chat %}}\"](/peertube-plugin-livechat/images/" -"new_live_activate_chat.png?classes=shadow,border&height=200px \"Chat " -"aktivieren\")" +"use_chat %}}\"](/peertube-plugin-livechat/images/new_live_activate_chat.png?" +"classes=shadow,border&height=200px \"Chat aktivieren\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "There can be other settings in this tab, depending on plugins installed on your Peertube instance." -msgstr "Je nachdem, welche Plugins auf Ihrer Peertube-Instanz installiert sind, können sich auf dieser Registerkarte weitere Einstellungen befinden." +msgid "" +"There can be other settings in this tab, depending on plugins installed on " +"your Peertube instance." +msgstr "" +"Je nachdem, welche Plugins auf Ihrer Peertube-Instanz installiert sind, " +"können sich auf dieser Registerkarte weitere Einstellungen befinden." #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2901,8 +4636,16 @@ msgstr "Chat pro Kanal" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "On the instance level, Peertube's administrators can choose if chat rooms are unique per video, or if there will be an unique chat room per channel. Please contact your instance's administrators for more information on how they configure the livechat plugin." -msgstr "Auf der Instanz-Ebene können die Peertube-Administratoren wählen, ob die Chat-Räume pro Video einzigartig sind, oder ob es einen einzigartigen Chat-Raum pro Kanal gibt. Bitte kontaktieren Sie die Administratoren Ihrer Instanz für weitere Informationen zur Konfiguration des Livechat-Plugins." +msgid "" +"On the instance level, Peertube's administrators can choose if chat rooms " +"are unique per video, or if there will be an unique chat room per channel. " +"Please contact your instance's administrators for more information on how " +"they configure the livechat plugin." +msgstr "" +"Auf der Instanz-Ebene können die Peertube-Administratoren wählen, ob die " +"Chat-Räume pro Video einzigartig sind, oder ob es einen einzigartigen Chat-" +"Raum pro Kanal gibt. Bitte kontaktieren Sie die Administratoren Ihrer " +"Instanz für weitere Informationen zur Konfiguration des Livechat-Plugins." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2912,18 +4655,30 @@ msgstr "Teilen Sie den Chat" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" button." -msgstr "Oben auf dem Chat gibt es eine Schaltfläche \"{{% livechat_label share_chat_link %}}\"." +msgid "" +"On top of the chat, there is a \"{{% livechat_label share_chat_link %}}\" " +"button." +msgstr "" +"Oben auf dem Chat gibt es eine Schaltfläche \"{{% livechat_label " +"share_chat_link %}}\"." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "This button opens a popup, where you can obtain an url to join the chat. This url can be shared." -msgstr "Diese Schaltfläche öffnet ein Popup-Fenster, in dem Sie eine URL erhalten, mit der Sie dem Chat beitreten können. Diese Url kann weitergegeben werden." +msgid "" +"This button opens a popup, where you can obtain an url to join the chat. " +"This url can be shared." +msgstr "" +"Diese Schaltfläche öffnet ein Popup-Fenster, in dem Sie eine URL erhalten, " +"mit der Sie dem Chat beitreten können. Diese Url kann weitergegeben werden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "The \"{{% livechat_label share_chat_embed %}}\" tab provide some links to embed the chat in websites, or in your live stream." -msgstr "Auf der Registerkarte \"{{% livechat_label share_chat_embed %}}\" finden Sie einige Links zum Einbetten des Chats in Websites oder in Ihre Livestream." +msgid "" +"The \"{{% livechat_label share_chat_embed %}}\" tab provide some links to " +"embed the chat in websites, or in your live stream." +msgstr "" +"Auf der Registerkarte \"{{% livechat_label share_chat_embed %}}\" finden Sie " +"einige Links zum Einbetten des Chats in Websites oder in Ihre Livestream." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2932,54 +4687,105 @@ msgstr "Sie können einige Optionen individuell anpassen:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "{{% livechat_label read_only %}}: you will only be able to read the chat, not write. This is useful to include the chat content in your live stream (see the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs))." -msgstr "{{% livechat_label read_only %}}: Sie können den Chat nur lesen, nicht schreiben. Dies ist nützlich, um den Inhalt des Chats in Ihren Live-Stream einzubinden (siehe die [OBS Dokumentation](/peertube-plugin-livechat/de/documentation/user/obs))." +msgid "" +"{{% livechat_label read_only %}}: you will only be able to read the chat, " +"not write. This is useful to include the chat content in your live stream " +"(see the [OBS documentation](/peertube-plugin-livechat/documentation/user/" +"obs))." +msgstr "" +"{{% livechat_label read_only %}}: Sie können den Chat nur lesen, nicht " +"schreiben. Dies ist nützlich, um den Inhalt des Chats in Ihren Live-Stream " +"einzubinden (siehe die [OBS Dokumentation](/peertube-plugin-livechat/de/" +"documentation/user/obs))." #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "{{% livechat_label use_current_theme_color %}}: if checked, your current theme colors will be added to the url, so that any user that opens the link will have the same color set." -msgstr "{{% livechat_label use_current_theme_color %}}: wenn diese Option aktiviert ist, werden die Farben des aktuellen Themas zur URL hinzugefügt, so dass jeder Benutzer, der den Link öffnet, dieselbe Farbe erhält." +msgid "" +"{{% livechat_label use_current_theme_color %}}: if checked, your current " +"theme colors will be added to the url, so that any user that opens the link " +"will have the same color set." +msgstr "" +"{{% livechat_label use_current_theme_color %}}: wenn diese Option aktiviert " +"ist, werden die Farben des aktuellen Themas zur URL hinzugefügt, so dass " +"jeder Benutzer, der den Link öffnet, dieselbe Farbe erhält." #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "{{% livechat_label generate_iframe %}}: instead of an url, you will obtain an HTML snippet that you can add to your website to embed the chat." -msgstr "{{% livechat_label generate_iframe %}}: Anstelle einer URL erhalten Sie ein HTML-Snippet, das Sie in Ihre Website einfügen können, um den Chat einzubetten." +msgid "" +"{{% livechat_label generate_iframe %}}: instead of an url, you will obtain " +"an HTML snippet that you can add to your website to embed the chat." +msgstr "" +"{{% livechat_label generate_iframe %}}: Anstelle einer URL erhalten Sie ein " +"HTML-Snippet, das Sie in Ihre Website einfügen können, um den Chat " +"einzubetten." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "For more information on the \"{{% livechat_label share_chat_dock %}}\" tab, check the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." -msgstr "Weitere Informationen über die Registerkarte \"{{% livechat_label share_chat_dock %}}\" finden Sie in der [OBS-Dokumentation](/peertube-plugin-livechat/de/documentation/user/obs)." +msgid "" +"For more information on the \"{{% livechat_label share_chat_dock %}}\" tab, " +"check the [OBS documentation](/peertube-plugin-livechat/documentation/user/" +"obs)." +msgstr "" +"Weitere Informationen über die Registerkarte \"{{% livechat_label " +"share_chat_dock %}}\" finden Sie in der [OBS-Dokumentation](/peertube-plugin-" +"livechat/de/documentation/user/obs)." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "In the \"{{% livechat_label web %}}\" tab, the provided url opens the chat in the Peertube interface. You can share this link to other users to invite them to join the chat." -msgstr "Auf der Registerkarte \"{{% livechat_label web %}}\" öffnet die angegebene URL den Chat in der Peertube-Oberfläche. Sie können diesen Link an andere Benutzer weitergeben, um sie zum Chat einzuladen." +msgid "" +"In the \"{{% livechat_label web %}}\" tab, the provided url opens the chat " +"in the Peertube interface. You can share this link to other users to invite " +"them to join the chat." +msgstr "" +"Auf der Registerkarte \"{{% livechat_label web %}}\" öffnet die angegebene " +"URL den Chat in der Peertube-Oberfläche. Sie können diesen Link an andere " +"Benutzer weitergeben, um sie zum Chat einzuladen." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, on the \"{{% livechat_label web %}} tab. There is a url you can copy.](/peertube-plugin-livechat/images/share_web.png?classes=shadow,border&height=200px \"Share link popup - web tab\")" +msgid "" +"![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, on " +"the \"{{% livechat_label web %}} tab. There is a url you can copy.](/" +"peertube-plugin-livechat/images/share_web.png?classes=shadow," +"border&height=200px \"Share link popup - web tab\")" msgstr "" "![Screenshot des \"{{% livechat_label share_chat_link %}}\"-Dialogs auf der " "Registerkarte \"{{% livechat_label web %}}\". Es gibt eine Url, die Sie " -"kopieren können](/peertube-plugin-livechat/images/" -"share_web.png?classes=shadow,border&height=200px Link teilen popup - Web " -"Registerkarte\")" +"kopieren können](/peertube-plugin-livechat/images/share_web.png?" +"classes=shadow,border&height=200px Link teilen popup - Web Registerkarte\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "The \"{{% livechat_label share_chat_link %}}\" popup can also contain a \"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be available if your instance's administators have enabled an correctly configured this option. Using this option, you can provide a link to join the chat using any [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). Using such softwares can for example facilitate moderation actions." -msgstr "Das \"{{% livechat_label share_chat_link %}}\" Popup-Fenster kann auch einen \"{{% livechat_label connect_using_xmpp %}}\" Reiter enthalten. Dieser ist nur verfügbar, wenn die Administratoren Ihrer Instanz diese Option aktiviert und korrekt konfiguriert haben. Mit dieser Option können Sie einen Link bereitstellen, um dem Chat mit einer beliebigen [XMPP-Client-Software](https://en.wikipedia.org/wiki/XMPP#Clients) beizutreten. Die Verwendung solcher Software kann zum Beispiel Moderationsmaßnahmen erleichtern." +msgid "" +"The \"{{% livechat_label share_chat_link %}}\" popup can also contain a " +"\"{{% livechat_label connect_using_xmpp %}}\" tab. This will only be " +"available if your instance's administators have enabled an correctly " +"configured this option. Using this option, you can provide a link to join " +"the chat using any [XMPP client software](https://en.wikipedia.org/wiki/" +"XMPP#Clients). Using such softwares can for example facilitate moderation " +"actions." +msgstr "" +"Das \"{{% livechat_label share_chat_link %}}\" Popup-Fenster kann auch einen " +"\"{{% livechat_label connect_using_xmpp %}}\" Reiter enthalten. Dieser ist " +"nur verfügbar, wenn die Administratoren Ihrer Instanz diese Option aktiviert " +"und korrekt konfiguriert haben. Mit dieser Option können Sie einen Link " +"bereitstellen, um dem Chat mit einer beliebigen [XMPP-Client-Software]" +"(https://en.wikipedia.org/wiki/XMPP#Clients) beizutreten. Die Verwendung " +"solcher Software kann zum Beispiel Moderationsmaßnahmen erleichtern." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md #: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, on the \"{{% livechat_label connect_using_xmpp %}}\" tab.](/peertube-plugin-livechat/images/share_xmpp_dialog.png?classes=shadow,border&height=200px \"{{% livechat_label connect_using_xmpp %}}\")" +msgid "" +"![Screenshot of the \"{{% livechat_label share_chat_link %}}\" dialog, on " +"the \"{{% livechat_label connect_using_xmpp %}}\" tab.](/peertube-plugin-" +"livechat/images/share_xmpp_dialog.png?classes=shadow,border&height=200px " +"\"{{% livechat_label connect_using_xmpp %}}\")" msgstr "" "![Screenshot des \"{{% livechat_label share_chat_link %}}\"-Dialogs, auf der " "Registerkarte \"{{% livechat_label connect_using_xmpp %}}\".](/peertube-" -"plugin-livechat/images/" -"share_xmpp_dialog.png?classes=shadow,border&height=200px \"{{% " -"livechat_label connect_using_xmpp %}}\")" +"plugin-livechat/images/share_xmpp_dialog.png?classes=shadow," +"border&height=200px \"{{% livechat_label connect_using_xmpp %}}\")" #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2991,8 +4797,12 @@ msgstr "Moderation" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "Please refer to the [moderation documentation](/peertube-plugin-livechat/documentation/user/streamers/moderation)." -msgstr "Bitte lesen Sie die [Moderationsdokumentation](/peertube-plugin-livechat/de/documentation/user/streamers/moderation)." +msgid "" +"Please refer to the [moderation documentation](/peertube-plugin-livechat/" +"documentation/user/streamers/moderation)." +msgstr "" +"Bitte lesen Sie die [Moderationsdokumentation](/peertube-plugin-livechat/de/" +"documentation/user/streamers/moderation)." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3002,8 +4812,12 @@ msgstr "Einbindung des Chats in den Videostream" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "Please refer to the [OBS documentation](/peertube-plugin-livechat/documentation/user/obs)." -msgstr "Bitte lesen Sie die [OBS-Dokumentation](/peertube-plugin-livechat/de/documentation/user/obs)." +msgid "" +"Please refer to the [OBS documentation](/peertube-plugin-livechat/" +"documentation/user/obs)." +msgstr "" +"Bitte lesen Sie die [OBS-Dokumentation](/peertube-plugin-livechat/de/" +"documentation/user/obs)." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3014,23 +4828,38 @@ msgstr "Chat Dauerhaftigkeit" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "By default, the chat is persistent. This means that the room content will be kept for a while. User joining will see messages posted before their arrival." -msgstr "Standardmäßig ist der Chat dauerhaft. Das bedeutet, dass der Inhalt des Raums eine Zeit lang erhalten bleibt. Benutzer, die dem Raum beitreten, sehen Nachrichten, die vor ihrer Ankunft gesendet wurden." +msgid "" +"By default, the chat is persistent. This means that the room content will " +"be kept for a while. User joining will see messages posted before their " +"arrival." +msgstr "" +"Standardmäßig ist der Chat dauerhaft. Das bedeutet, dass der Inhalt des " +"Raums eine Zeit lang erhalten bleibt. Benutzer, die dem Raum beitreten, " +"sehen Nachrichten, die vor ihrer Ankunft gesendet wurden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "You can change the persistence behaviour. [Open the chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), and click on \"Configure\"." -msgstr "Sie können das Dauerhaftigkeitsverhalten ändern. [Öffnen Sie das Chat Dropdownmenü](/peertube-plugin-livechat/de/documentation/user/viewers), und klicken Sie auf \"Konfigurieren\"." +msgid "" +"You can change the persistence behaviour. [Open the chat dropdown menu](/" +"peertube-plugin-livechat/documentation/user/viewers), and click on " +"\"Configure\"." +msgstr "" +"Sie können das Dauerhaftigkeitsverhalten ändern. [Öffnen Sie das Chat " +"Dropdownmenü](/peertube-plugin-livechat/de/documentation/user/viewers), und " +"klicken Sie auf \"Konfigurieren\"." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md #: build/documentation/pot_in/documentation/user/streamers/moderation.md #: support/documentation/content/en/documentation/user/viewers.md -msgid "![Screenshot of the dropdown menu at the top of the chat. Several entries are available.](/peertube-plugin-livechat/images/top_menu.png?classes=shadow,border&height=200px \"Chat menu\")" +msgid "" +"![Screenshot of the dropdown menu at the top of the chat. Several entries " +"are available.](/peertube-plugin-livechat/images/top_menu.png?classes=shadow," +"border&height=200px \"Chat menu\")" msgstr "" "![Screenshot des Dropdown-Menüs oben im Chat. Es sind mehrere Einträge " -"verfügbar. ](/peertube-plugin-livechat/images/" -"top_menu.png?classes=shadow,border&height=200px \"Chat Menü\")" +"verfügbar. ](/peertube-plugin-livechat/images/top_menu.png?classes=shadow," +"border&height=200px \"Chat Menü\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3039,7 +4868,10 @@ msgstr "Es gibt mehrere Optionen, die geändert werden können." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "![Screenshot of the chat configuration form.](/peertube-plugin-livechat/images/configure.png?classes=shadow,border&height=200px \"Configure chat room\")" +msgid "" +"![Screenshot of the chat configuration form.](/peertube-plugin-livechat/" +"images/configure.png?classes=shadow,border&height=200px \"Configure chat " +"room\")" msgstr "" "![Screenshot des Chat-Konfigurationsformulars.](/peertube-plugin-livechat/" "images/configure.png?classes=shadow,border&height=200px \"Chatraum " @@ -3047,18 +4879,32 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "You can for example set the default and maximum number of messages to return to 0, so that new incomers won't see any previously sent message." -msgstr "Sie können z. B. die Standard- und Höchstzahl der zurückzusendenden Nachrichten auf 0 setzen, so dass neue Empfänger keine zuvor gesendeten Nachrichten sehen." +msgid "" +"You can for example set the default and maximum number of messages to return " +"to 0, so that new incomers won't see any previously sent message." +msgstr "" +"Sie können z. B. die Standard- und Höchstzahl der zurückzusendenden " +"Nachrichten auf 0 setzen, so dass neue Empfänger keine zuvor gesendeten " +"Nachrichten sehen." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "You can also uncheck \"enable archiving\": if unchecked, messages will be pruned if the server restarts." -msgstr "Sie können auch die Option \"Archivierung aktivieren\" deaktivieren: Wenn diese Option nicht aktiviert ist, werden die Nachrichten beim Neustart des Servers gelöscht." +msgid "" +"You can also uncheck \"enable archiving\": if unchecked, messages will be " +"pruned if the server restarts." +msgstr "" +"Sie können auch die Option \"Archivierung aktivieren\" deaktivieren: Wenn " +"diese Option nicht aktiviert ist, werden die Nachrichten beim Neustart des " +"Servers gelöscht." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "By unchecking \"Persistent\", the room will be cleared if there is no more participant." -msgstr "Wenn Sie das Häkchen bei \"Dauerhaft\" entfernen, wird der Raum gelöscht, wenn es keinen Teilnehmer mehr gibt." +msgid "" +"By unchecking \"Persistent\", the room will be cleared if there is no more " +"participant." +msgstr "" +"Wenn Sie das Häkchen bei \"Dauerhaft\" entfernen, wird der Raum gelöscht, " +"wenn es keinen Teilnehmer mehr gibt." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3068,13 +4914,26 @@ msgstr "Löschen des Chat Inhalts" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "If you want to delete the chat content, [open the chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), then click on \"Destroy\". A popup will open, asking a confirmation." -msgstr "Wenn Sie den Inhalt des Chats löschen möchten, [öffnen Sie deas Dropdown Menü des Chats](/peertube-plugin-livechat/de/documentation/user/viewers) und klicken Sie auf \"Löschen\". Es öffnet sich ein Popup-Fenster, das eine Bestätigung verlangt." +msgid "" +"If you want to delete the chat content, [open the chat dropdown menu](/" +"peertube-plugin-livechat/documentation/user/viewers), then click on " +"\"Destroy\". A popup will open, asking a confirmation." +msgstr "" +"Wenn Sie den Inhalt des Chats löschen möchten, [öffnen Sie deas Dropdown " +"Menü des Chats](/peertube-plugin-livechat/de/documentation/user/viewers) und " +"klicken Sie auf \"Löschen\". Es öffnet sich ein Popup-Fenster, das eine " +"Bestätigung verlangt." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md -msgid "The chat will be automatically recreated each time someone tries to join it as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" feature activated." -msgstr "Der Chat wird automatisch neu erstellt, wenn jemand versucht, ihm beizutreten, solange das Video existiert und die Funktion \"{{% livechat_label use_chat %}}\" aktiviert ist." +msgid "" +"The chat will be automatically recreated each time someone tries to join it " +"as long as the video exists, and has the \"{{% livechat_label use_chat %}}\" " +"feature activated." +msgstr "" +"Der Chat wird automatisch neu erstellt, wenn jemand versucht, ihm " +"beizutreten, solange das Video existiert und die Funktion \"{{% " +"livechat_label use_chat %}}\" aktiviert ist." #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/commands.md @@ -3090,7 +4949,10 @@ msgstr "Befehle" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/commands.md -msgid "![Screenshot of the channel options page, with some fields to configure the bot commands.](/peertube-plugin-livechat/images/bot_commands.png?classes=shadow,border&height=400px \"Commands configuration\")" +msgid "" +"![Screenshot of the channel options page, with some fields to configure the " +"bot commands.](/peertube-plugin-livechat/images/bot_commands.png?" +"classes=shadow,border&height=400px \"Commands configuration\")" msgstr "" "![Screenshot der Seite mit den Kanaloptionen, mit einigen Feldern zur " "Konfiguration der Chatbot-Befehle.](/peertube-plugin-livechat/images/" @@ -3115,7 +4977,10 @@ msgstr "Verbotene Wörter" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "![Screenshot of the channel options page, with several fields to configure the forbidden words.](/peertube-plugin-livechat/images/bot_forbidden_words.png?classes=shadow,border&height=400px \"Forbidden words configuration\")" +msgid "" +"![Screenshot of the channel options page, with several fields to configure " +"the forbidden words.](/peertube-plugin-livechat/images/bot_forbidden_words." +"png?classes=shadow,border&height=400px \"Forbidden words configuration\")" msgstr "" "![Screenshot der Seite mit den Kanaloptionen, mit mehreren Feldern zur " "Konfiguration der verbotenen Wörter.](/peertube-plugin-livechat/images/" @@ -3124,7 +4989,10 @@ msgstr "" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "![Screenshot of a chat message that was deleted, with the following reason: \"No url allowed\".](/peertube-plugin-livechat/images/bot_deleted_message.png?classes=shadow,border&height=100px \"Deleted message\")" +msgid "" +"![Screenshot of a chat message that was deleted, with the following reason: " +"\"No url allowed\".](/peertube-plugin-livechat/images/bot_deleted_message." +"png?classes=shadow,border&height=100px \"Deleted message\")" msgstr "" "![Screenshot einer Chat-Nachricht, die mit folgender Begründung gelöscht " "wurde: \"Keine URL erlaubt\".](/peertube-plugin-livechat/images/" @@ -3133,54 +5001,113 @@ msgstr "" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "You can fill several \"{{% livechat_label livechat_configuration_channel_forbidden_words_label %}}\" fields. When a user sends a message that match the configured criteria, the message will automatically be deleted." -msgstr "Sie können mehrere \"{{% livechat_label livechat_configuration_channel_forbidden_words_label %}}\"-Felder ausfüllen. Wenn ein Benutzer eine Nachricht sendet, die den konfigurierten Kriterien entspricht, wird die Nachricht automatisch gelöscht." +msgid "" +"You can fill several \"{{% livechat_label " +"livechat_configuration_channel_forbidden_words_label %}}\" fields. When a " +"user sends a message that match the configured criteria, the message will " +"automatically be deleted." +msgstr "" +"Sie können mehrere \"{{% livechat_label " +"livechat_configuration_channel_forbidden_words_label %}}\"-Felder " +"ausfüllen. Wenn ein Benutzer eine Nachricht sendet, die den konfigurierten " +"Kriterien entspricht, wird die Nachricht automatisch gelöscht." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "In this field, you can set several words, group of words, or \"regular expressions\"." -msgstr "In diesem Feld können Sie mehrere Wörter, Wortgruppen oder \"reguläre Ausdrücke\" (regex) eingeben." +msgid "" +"In this field, you can set several words, group of words, or \"regular " +"expressions\"." +msgstr "" +"In diesem Feld können Sie mehrere Wörter, Wortgruppen oder \"reguläre " +"Ausdrücke\" (regex) eingeben." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "Each time a user sends a message, these words will be tested. If the message containes one of them, the message will be deleted." -msgstr "Jedes Mal, wenn ein Benutzer eine Nachricht sendet, werden diese Wörter getestet. Wenn die Nachricht eines dieser Wörter enthält, wird die Nachricht gelöscht." +msgid "" +"Each time a user sends a message, these words will be tested. If the " +"message containes one of them, the message will be deleted." +msgstr "" +"Jedes Mal, wenn ein Benutzer eine Nachricht sendet, werden diese Wörter " +"getestet. Wenn die Nachricht eines dieser Wörter enthält, wird die " +"Nachricht gelöscht." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md msgid "You can for example fill this field with a swear words list." -msgstr "Sie können dieses Feld zum Beispiel mit einer Liste von Schimpfwörtern füllen." +msgstr "" +"Sie können dieses Feld zum Beispiel mit einer Liste von Schimpfwörtern " +"füllen." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "To get some examples, please check these [forbidden words suggestions](https://framagit.org/Livingston/peertube-plugin-livechat/-/tree/main/support/forbidden_words)." -msgstr "Einige Beispiele finden Sie in den [Vorschlägen für verbotene Wörter](https://framagit.org/Livingston/peertube-plugin-livechat/-/tree/main/support/forbidden_words)." +msgid "" +"To get some examples, please check these [forbidden words suggestions]" +"(https://framagit.org/Livingston/peertube-plugin-livechat/-/tree/main/" +"support/forbidden_words)." +msgstr "" +"Einige Beispiele finden Sie in den [Vorschlägen für verbotene Wörter]" +"(https://framagit.org/Livingston/peertube-plugin-livechat/-/tree/main/" +"support/forbidden_words)." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "If you have some usefull words lists, you are welcome to contribute to this suggestion page. There are in the `support/forbidden_words` folder of the livechat source code. See the [contribution guide](/peertube-plugin-livechat/contributing/) for more information." -msgstr "Wenn Sie einige nützliche Wörterlisten haben, können Sie die gerne zu dieser Vorschlagsseite beitragen. Sie befinden sich im Ordner `support/forbidden_words` des Livechat-Quellcodes. Siehe die [Beitragen Seite](/peertube-plugin-livechat/de/contributing/) für weitere Informationen." +msgid "" +"If you have some usefull words lists, you are welcome to contribute to this " +"suggestion page. There are in the `support/forbidden_words` folder of the " +"livechat source code. See the [contribution guide](/peertube-plugin-" +"livechat/contributing/) for more information." +msgstr "" +"Wenn Sie einige nützliche Wörterlisten haben, können Sie die gerne zu dieser " +"Vorschlagsseite beitragen. Sie befinden sich im Ordner `support/" +"forbidden_words` des Livechat-Quellcodes. Siehe die [Beitragen Seite](/" +"peertube-plugin-livechat/de/contributing/) für weitere Informationen." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md msgid "These words are case insensitive." -msgstr "Bei diesen Wörtern wird die Groß- und Kleinschreibung nicht berücksichtigt." +msgstr "" +"Bei diesen Wörtern wird die Groß- und Kleinschreibung nicht berücksichtigt." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "You can combine a short [moderation delay](/peertube-plugin-livechat/documentation/user/streamers/moderation_delay) (1 second for example) with the [moderation bot](/peertube-plugin-livechat/documentation/user/streamers/bot) to delete messages containing swear words before any non-moderator user will see them." -msgstr "Sie können eine kurze [Moderationsverzögerung](/peertube-plugin-livechat/de/documentation/user/streamers/moderation_delay) (z.B. 1 Sekunde) mit dem [Moderations-Chatbot](/peertube-plugin-livechat/de/documentation/user/streamers/bot) kombinieren, um Nachrichten mit Schimpfwörtern zu löschen, bevor ein Nicht-Moderator sie sieht." +msgid "" +"You can combine a short [moderation delay](/peertube-plugin-livechat/" +"documentation/user/streamers/moderation_delay) (1 second for example) with " +"the [moderation bot](/peertube-plugin-livechat/documentation/user/streamers/" +"bot) to delete messages containing swear words before any non-moderator user " +"will see them." +msgstr "" +"Sie können eine kurze [Moderationsverzögerung](/peertube-plugin-livechat/de/" +"documentation/user/streamers/moderation_delay) (z.B. 1 Sekunde) mit dem " +"[Moderations-Chatbot](/peertube-plugin-livechat/de/documentation/user/" +"streamers/bot) kombinieren, um Nachrichten mit Schimpfwörtern zu löschen, " +"bevor ein Nicht-Moderator sie sieht." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "This features is still experimental. There might be some issues with non-latin alphabets. You can [open an issue](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues) to report your problems." -msgstr "Diese Funktion ist noch experimentell. Es könnte einige Probleme mit nicht-lateinischen Alphabeten geben. Sie können [ein Problem öffnen](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues), um Ihre Probleme zu melden." +msgid "" +"This features is still experimental. There might be some issues with non-" +"latin alphabets. You can [open an issue](https://github.com/JohnXLivingston/" +"peertube-plugin-livechat/issues) to report your problems." +msgstr "" +"Diese Funktion ist noch experimentell. Es könnte einige Probleme mit nicht-" +"lateinischen Alphabeten geben. Sie können [ein Problem öffnen](https://" +"github.com/JohnXLivingston/peertube-plugin-livechat/issues), um Ihre " +"Probleme zu melden." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md -msgid "By checking this option, each line of the \"{{% livechat_label livechat_configuration_channel_forbidden_words_label %}}\" field will be considered as a [regular expression](https://en.wikipedia.org/wiki/Regular_expression)." -msgstr "Wenn Sie diese Option aktivieren, wird jede Zeile des Feldes \"{{% livechat_label livechat_configuration_channel_forbidden_words_label %}}\" als [regulärer Ausdruck](https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck) betrachtet." +msgid "" +"By checking this option, each line of the \"{{% livechat_label " +"livechat_configuration_channel_forbidden_words_label %}}\" field will be " +"considered as a [regular expression](https://en.wikipedia.org/wiki/" +"Regular_expression)." +msgstr "" +"Wenn Sie diese Option aktivieren, wird jede Zeile des Feldes \"{{% " +"livechat_label livechat_configuration_channel_forbidden_words_label %}}\" " +"als [regulärer Ausdruck](https://de.wikipedia.org/wiki/" +"Regul%C3%A4rer_Ausdruck) betrachtet." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/bot/_index.md @@ -3198,39 +5125,89 @@ msgstr "Chatbot" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/bot/_index.md #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "This feature comes with the livechat plugin version 8.0.0, and can be disabled by your instance's admins." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 8.0.0 geliefert und kann von den Administratoren Ihrer Instanz deaktiviert werden." +msgid "" +"This feature comes with the livechat plugin version 8.0.0, and can be " +"disabled by your instance's admins." +msgstr "" +"Diese Funktion wird mit dem Livechatplugin Version 8.0.0 geliefert und kann " +"von den Administratoren Ihrer Instanz deaktiviert werden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/bot/_index.md -msgid "You can enable a chat bot on your chatrooms. The bot configuration is made channel per channel, and will apply to all related videos' chatrooms." -msgstr "Sie können einen Chatbot für Ihre Chaträume aktivieren. Die Chatbotkonfiguration wird für jeden Kanal vorgenommen und gilt für alle Chaträume der zugehörigen Videos." +msgid "" +"You can enable a chat bot on your chatrooms. The bot configuration is made " +"channel per channel, and will apply to all related videos' chatrooms." +msgstr "" +"Sie können einen Chatbot für Ihre Chaträume aktivieren. Die " +"Chatbotkonfiguration wird für jeden Kanal vorgenommen und gilt für alle " +"Chaträume der zugehörigen Videos." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/bot/_index.md #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "![Screenshot of the channel options. There is a form with multiple fields.](/peertube-plugin-livechat/images/channel_configuration.png?classes=shadow,border&height=400px \"Channel configuration\")" +msgid "" +"![Screenshot of the channel options. There is a form with multiple fields.](/" +"peertube-plugin-livechat/images/channel_configuration.png?classes=shadow," +"border&height=400px \"Channel configuration\")" msgstr "" -"![Screenshot der Kanaloptionen; es gibt ein Formular mit mehreren Feldern" -".](/peertube-plugin-livechat/images/" -"channel_configuration.png?classes=shadow,border&height=400px " -"\"Kanalkonfiguration\")" +"![Screenshot der Kanaloptionen; es gibt ein Formular mit mehreren Feldern.](/" +"peertube-plugin-livechat/images/channel_configuration.png?classes=shadow," +"border&height=400px \"Kanalkonfiguration\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/bot/_index.md -msgid "To access this page, check the [channel configuration documentation](/peertube-plugin-livechat/documentation/user/streamers/channel)." -msgstr "Um auf diese Seite zuzugreifen, sehen Sie sich die [Kanal Konfigurations Dokumentation](/peertube-plugin-livechat/de/documentation/user/streamers/channel) an." +msgid "" +"To access this page, check the [channel configuration documentation](/" +"peertube-plugin-livechat/documentation/user/streamers/channel)." +msgstr "" +"Um auf diese Seite zuzugreifen, sehen Sie sich die [Kanal Konfigurations " +"Dokumentation](/peertube-plugin-livechat/de/documentation/user/streamers/" +"channel) an." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/bot/_index.md msgid "Once there, you can enable the bot, and setup several options:" -msgstr "Dort können Sie den Chatbot aktivieren und verschiedene Optionen einstellen:" +msgstr "" +"Dort können Sie den Chatbot aktivieren und verschiedene Optionen einstellen:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/bot/_index.md msgid "The bot will reload instantly when you save the page." msgstr "Der Chatbot wird sofort neu geladen, wenn Sie die Seite speichern." +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "Der Bot kann automatisch doppelte Nachrichten moderieren." + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "Keine doppelten Nachrichten" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "Konfiguration" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "" +"![Screenshot of the channel options page, with several fields to configure " +"the \"No duplicate message\" option.](/peertube-plugin-livechat/images/" +"bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate " +"message configuration\")" +msgstr "" +"![Screenshot der Seite mit den Kanaloptionen, mit mehreren Feldern zur " +"Konfiguration der Option \"Keine doppelten Nachrichten\".](/peertube-plugin-" +"livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px " +"\"Keine doppelten Nachrichten Konfiguration\")" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3246,16 +5223,46 @@ msgstr "Timer" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md msgid "If there is no user in the chatroom, the bot won't send any message." -msgstr "Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine Nachricht." +msgstr "" +"Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine " +"Nachricht." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md -msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" +msgid "" +"![Screenshot of the channel options page, with some fields to configure a " +"new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow," +"border&height=200px \"Timers configuration\")" msgstr "" "![Screenshot der Seite mit den Kanaloptionen, mit einigen Feldern zur " "Konfiguration eines neuen Timers.](/peertube-plugin-livechat/images/" "bot_quotes.png?classes=shadow,border&height=200px \"Timer konfiguration\")" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "Der Chatbot kann automatisch Nachrichten moderieren, die zu viele Sonderzeichen enthalten." + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "Sonderzeichen" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "" +"![Screenshot of the channel options page, with several fields to configure " +"the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/" +"forbid_special_chars_configuration.png?classes=shadow,border&height=400px " +"\"Forbid special characters configuration\")" +msgstr "" +"![Screenshot der Seite mit den Kanaloptionen, mit mehreren Feldern zur " +"Konfiguration der Option \"Sonderzeichen verbieten\".](/peertube-plugin-" +"livechat/images/forbid_special_chars_configuration.png?classes=shadow," +"border&height=400px \"Sonderzeichen verbieten Konfiguration\")" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3270,21 +5277,34 @@ msgstr "Kanalkonfiguration" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "In the Peertube left menu, there is a \"{{% livechat_label menu_configuration_label %}}\" entry:" -msgstr "Im linken Menü von Peertube gibt es einen Eintrag \"{{% livechat_label menu_configuration_label %}}\":" +msgid "" +"In the Peertube left menu, there is a \"{{% livechat_label " +"menu_configuration_label %}}\" entry:" +msgstr "" +"Im linken Menü von Peertube gibt es einen Eintrag \"{{% livechat_label " +"menu_configuration_label %}}\":" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "![Screenshot of the chatrooms configuration page. The page list the user's channels.](/peertube-plugin-livechat/images/chatrooms_menu.png?classes=shadow,border&height=400px \"Chatrooms menu\")" +msgid "" +"![Screenshot of the chatrooms configuration page. The page list the user's " +"channels.](/peertube-plugin-livechat/images/chatrooms_menu.png?" +"classes=shadow,border&height=400px \"Chatrooms menu\")" msgstr "" "![Screenshot der Konfigurationsseite für Chaträume. Die Seite listet die " -"Kanäle des Benutzers auf.](/peertube-plugin-livechat/images/" -"chatrooms_menu.png?classes=shadow,border&height=400px \"Chaträume Menü\")" +"Kanäle des Benutzers auf.](/peertube-plugin-livechat/images/chatrooms_menu." +"png?classes=shadow,border&height=400px \"Chaträume Menü\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "This \"{{% livechat_label menu_configuration_label %}}\" link takes you to a list of your channels. By clicking on a channel, you will then be able to setup some options for your channels:" -msgstr "Dieser \"{{% livechat_label menu_configuration_label %}}\" Link führt Sie zu einer Liste Ihrer Kanäle. Wenn Sie auf einen Kanal klicken, können Sie einige Optionen für Ihre Kanäle einrichten:" +msgid "" +"This \"{{% livechat_label menu_configuration_label %}}\" link takes you to a " +"list of your channels. By clicking on a channel, you will then be able to " +"setup some options for your channels:" +msgstr "" +"Dieser \"{{% livechat_label menu_configuration_label %}}\" Link führt Sie zu " +"einer Liste Ihrer Kanäle. Wenn Sie auf einen Kanal klicken, können Sie " +"einige Optionen für Ihre Kanäle einrichten:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/channel.md @@ -3293,28 +5313,48 @@ msgstr "Hier können Sie konfigurieren:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "[{{% livechat_label livechat_configuration_channel_terms_label %}}](/peertube-plugin-livechat/documentation/user/streamers/terms)" -msgstr "[{{% livechat_label livechat_configuration_channel_terms_label %}}](/peertube-plugin-livechat/de/documentation/user/streamers/terms)" +msgid "" +"[{{% livechat_label livechat_configuration_channel_terms_label %}}](/" +"peertube-plugin-livechat/documentation/user/streamers/terms)" +msgstr "" +"[{{% livechat_label livechat_configuration_channel_terms_label %}}](/" +"peertube-plugin-livechat/de/documentation/user/streamers/terms)" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "[{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}](/peertube-plugin-livechat/documentation/user/streamers/moderation) default value" -msgstr "[{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}](/peertube-plugin-livechat/de/documentation/user/streamers/moderation) Standardwert" +msgid "" +"[{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}]" +"(/peertube-plugin-livechat/documentation/user/streamers/moderation) default " +"value" +msgstr "" +"[{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}]" +"(/peertube-plugin-livechat/de/documentation/user/streamers/moderation) " +"Standardwert" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "[The slow mode](/peertube-plugin-livechat/documentation/user/streamers/slow_mode)" -msgstr "[Der langsame Modus](/peertube-plugin-livechat/de/documentation/user/streamers/slow_mode)" +msgid "" +"[The slow mode](/peertube-plugin-livechat/documentation/user/streamers/" +"slow_mode)" +msgstr "" +"[Der langsame Modus](/peertube-plugin-livechat/de/documentation/user/" +"streamers/slow_mode)" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "[The chat bot](/peertube-plugin-livechat/documentation/user/streamers/bot)" -msgstr "[Den Chatbot](/peertube-plugin-livechat/de/documentation/user/streamers/bot)" +msgid "" +"[The chat bot](/peertube-plugin-livechat/documentation/user/streamers/bot)" +msgstr "" +"[Den Chatbot](/peertube-plugin-livechat/de/documentation/user/streamers/bot)" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/channel.md -msgid "[Custom emojis](/peertube-plugin-livechat/documentation/user/streamers/emojis)" -msgstr "[Benutzerdefinierte Emojis](/peertube-plugin-livechat/de/documentation/user/streamers/emojis)" +msgid "" +"[Custom emojis](/peertube-plugin-livechat/documentation/user/streamers/" +"emojis)" +msgstr "" +"[Benutzerdefinierte Emojis](/peertube-plugin-livechat/de/documentation/user/" +"streamers/emojis)" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/channel.md @@ -3346,12 +5386,22 @@ msgstr "Streamer können benutzerdefinierte Emojis zu ihren Kanälen hinzufügen #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "On the [channel configuration page](/peertube-plugin-livechat/documentation/user/streamers/channel), open the \"{{% livechat_label livechat_configuration_channel_emojis_title %}}\" tab:" -msgstr "Öffnen Sie auf der [Kanal Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/streamers/channel) die Registerkarte \"{{% livechat_label livechat_configuration_channel_emojis_title %}}\":" +msgid "" +"On the [channel configuration page](/peertube-plugin-livechat/documentation/" +"user/streamers/channel), open the \"{{% livechat_label " +"livechat_configuration_channel_emojis_title %}}\" tab:" +msgstr "" +"Öffnen Sie auf der [Kanal Konfigurationsseite](/peertube-plugin-livechat/de/" +"documentation/user/streamers/channel) die Registerkarte \"{{% livechat_label " +"livechat_configuration_channel_emojis_title %}}\":" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "![Screenshot of the emoji configuration page. There is a form where you can add new emojis.](/peertube-plugin-livechat/images/channel_custom_emojis_configuration.png?classes=shadow,border&height=400px \"Channel configuration / Channel emojis configuration\")" +msgid "" +"![Screenshot of the emoji configuration page. There is a form where you can " +"add new emojis.](/peertube-plugin-livechat/images/" +"channel_custom_emojis_configuration.png?classes=shadow,border&height=400px " +"\"Channel configuration / Channel emojis configuration\")" msgstr "" "![Screenshot der Emoji-Konfigurationsseite. Es gibt ein Formular, in dem Sie " "neue Emojis hinzufügen können.](/peertube-plugin-livechat/images/" @@ -3360,7 +5410,11 @@ msgstr "" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "![Screenshot of a chat session, with messages containing custom emojis. The emoji picker is open, and shows custom emojis.](/peertube-plugin-livechat/images/channel_custom_emojis.png?classes=shadow,border&height=400px \"Channel configuration / Channel emojis\")" +msgid "" +"![Screenshot of a chat session, with messages containing custom emojis. The " +"emoji picker is open, and shows custom emojis.](/peertube-plugin-livechat/" +"images/channel_custom_emojis.png?classes=shadow,border&height=400px " +"\"Channel configuration / Channel emojis\")" msgstr "" "![Screenshot einer Chatsitzung mit Nachrichten, die benutzerdefinierte " "Emojis enthalten. Die Emoji-Auswahl ist geöffnet und zeigt " @@ -3376,13 +5430,28 @@ msgstr "Importieren / Exportieren" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "On the channel configuration page, there are an \"{{% livechat_label action_import %}}\" and an \"{{% livechat_label action_export %}}\" button. The \"{{% livechat_label action_export %}}\" button generates a file than you can then import on another channel." -msgstr "Auf der Kanalkonfigurationsseite gibt es eine \"{{% livechat_label action_import %}}\"- und eine \"{{% livechat_label action_export %}}\"-Schaltfläche. Die \"{{% livechat_label action_export %}}\"-Schaltfläche generiert eine Datei, die in einen anderen Kanal importiert werden kann." +msgid "" +"On the channel configuration page, there are an \"{{% livechat_label " +"action_import %}}\" and an \"{{% livechat_label action_export %}}\" button. " +"The \"{{% livechat_label action_export %}}\" button generates a file than " +"you can then import on another channel." +msgstr "" +"Auf der Kanalkonfigurationsseite gibt es eine \"{{% livechat_label " +"action_import %}}\"- und eine \"{{% livechat_label action_export %}}\"-" +"Schaltfläche. Die \"{{% livechat_label action_export %}}\"-Schaltfläche " +"generiert eine Datei, die in einen anderen Kanal importiert werden kann." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "You can also generate a file to import from any other source (for example you can import your Twitch custom emojis). The file must be a valid JSON file, using the following format:" -msgstr "Sie können auch eine Datei generieren, die Sie aus einer anderen Quelle importieren (z. B. können Sie Ihre benutzerdefinierten Twitch-Emojis importieren). Bei der Datei muss es sich um eine gültige JSON-Datei handeln, die das folgende Format hat:" +msgid "" +"You can also generate a file to import from any other source (for example " +"you can import your Twitch custom emojis). The file must be a valid JSON " +"file, using the following format:" +msgstr "" +"Sie können auch eine Datei generieren, die Sie aus einer anderen Quelle " +"importieren (z. B. können Sie Ihre benutzerdefinierten Twitch-Emojis " +"importieren). Bei der Datei muss es sich um eine gültige JSON-Datei " +"handeln, die das folgende Format hat:" #. type: Fenced code block (json) #: build/documentation/pot_in/documentation/user/streamers/emojis.md @@ -3404,8 +5473,75 @@ msgstr "" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." -msgstr "Das Attribut `sn` ist der Kurznamencode. Das Attribut \"url\" kann eine beliebige Bild-URL sein, auf die Ihr Browser zugreifen kann, oder eine [Daten-URL] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs), die die zu importierende Datei darstellt." +msgid "" +"The `sn` attribute is the short name code. The `url` attribute can be any " +"image url than your browser can access, or a [Data URL](https://developer." +"mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the " +"file you want to import." +msgstr "" +"Das Attribut `sn` ist der Kurznamencode. Das Attribut \"url\" kann eine " +"beliebige Bild-URL sein, auf die Ihr Browser zugreifen kann, oder eine " +"[Daten-URL] (https://developer.mozilla.org/en-US/docs/Web/HTTP/" +"Basics_of_HTTP/Data_URLs), die die zu importierende Datei darstellt." + +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "Plugin peertube-plugin-livechat nur Emojis Modus" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "Nur Emojis-Modus" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "Dieser Modus kann sehr nützlich sein, um beispielsweise:" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" +"Um Spam oder beleidigende Nachrichten zu vermeiden, wenn Sie nicht hier " +"sind, um zu moderieren." + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "" +"When there are too many speaking participants, and you can't no more " +"moderate correctly." +msgstr "" +"Wenn zu viele Teilnehmer schreiben und Sie nicht mehr richtig moderieren " +"können." + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "" +"To enable or disable this feature, use the [chat dropdown menu](/peertube-" +"plugin-livechat/documentation/user/viewers), open the \"configure\" menu. " +"In the form, you will find a \"{{% livechat_label emoji_only_mode_title " +"%}}\" checkbox." +msgstr "" +"Um diese Funktion zu aktivieren oder zu deaktivieren, verwenden Sie das " +"[Chat-Dropdown-Menü](/peertube-plugin-livechat/de/documentation/user/" +"viewers), öffnen Sie das Menü \"Konfigurieren\". In dem Formular finden Sie " +"eine Checkbox \"{{% livechat_label emoji_only_mode_title %}}\"." + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "" +"If you want to enable it for all your chatrooms at once, open the [channel " +"emojis configuration page](/peertube-plugin-livechat/documentation/user/" +"streamers/emojis/), and use the \"{{% livechat_label " +"emoji_only_enable_all_rooms %}}\" button." +msgstr "" +"Wenn Sie es für alle Ihre Chaträume auf einmal aktivieren möchten, öffnen " +"Sie die [Kanal Emojis Konfigurationsseite](/peertube-plugin-livechat/de/" +"documentation/user/streamers/emojis/), und benutzen Sie die \"{{% " +"livechat_label emoji_only_enable_all_rooms %}}\" Schaltfläche." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md @@ -3431,11 +5567,6 @@ msgstr "Plugin peertube-plugin-livechat Moderationsverzögerung" msgid "Moderation delay" msgstr "Moderationsverzögerung" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 10.3.0 verfügbar sein." - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3448,18 +5579,34 @@ msgstr "Einführung" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "As a streamer, you can choose to delay messages in the chat, to let some time to moderators to delete messages before they can even be read by other participants." -msgstr "Als Streamer können Sie Nachrichten im Chat verzögern, um Moderatoren etwas Zeit zu geben, Nachrichten zu löschen, bevor sie von anderen Teilnehmern gelesen werden können." +msgid "" +"As a streamer, you can choose to delay messages in the chat, to let some " +"time to moderators to delete messages before they can even be read by other " +"participants." +msgstr "" +"Als Streamer können Sie Nachrichten im Chat verzögern, um Moderatoren etwas " +"Zeit zu geben, Nachrichten zu löschen, bevor sie von anderen Teilnehmern " +"gelesen werden können." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "When this feature is enabled, moderators will see all messages without any delay. Chat participants won't see that their own messages are delayed." -msgstr "Wenn diese Funktion aktiviert ist, sehen die Moderatoren alle Nachrichten ohne Verzögerung. Die Chat-Teilnehmer sehen nicht, dass ihre eigenen Nachrichten verzögert sind." +msgid "" +"When this feature is enabled, moderators will see all messages without any " +"delay. Chat participants won't see that their own messages are delayed." +msgstr "" +"Wenn diese Funktion aktiviert ist, sehen die Moderatoren alle Nachrichten " +"ohne Verzögerung. Die Chat-Teilnehmer sehen nicht, dass ihre eigenen " +"Nachrichten verzögert sind." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "Please note that messages sent by moderators will also be delayed, to avoid them to respond to messages that are not even visible by other participants." -msgstr "Bitte beachten Sie, dass Nachrichten, die von Moderatoren gesendet werden, ebenfalls verzögert werden, um zu vermeiden, dass sie auf Nachrichten antworten, die für andere Teilnehmer gar nicht sichtbar sind." +msgid "" +"Please note that messages sent by moderators will also be delayed, to avoid " +"them to respond to messages that are not even visible by other participants." +msgstr "" +"Bitte beachten Sie, dass Nachrichten, die von Moderatoren gesendet werden, " +"ebenfalls verzögert werden, um zu vermeiden, dass sie auf Nachrichten " +"antworten, die für andere Teilnehmer gar nicht sichtbar sind." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md @@ -3469,12 +5616,22 @@ msgstr "Moderationverzögerungs-Optionen" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "On the [channel configuration page](/peertube-plugin-livechat/documentation/user/streamers/channel), you can set the \"{{% livechat_label moderation_delay %}}\" option:" -msgstr "Auf der [Kanal Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/streamers/channel) können Sie die Option \"{{% livechat_label moderation_delay %}}\" einstellen:" +msgid "" +"On the [channel configuration page](/peertube-plugin-livechat/documentation/" +"user/streamers/channel), you can set the \"{{% livechat_label " +"moderation_delay %}}\" option:" +msgstr "" +"Auf der [Kanal Konfigurationsseite](/peertube-plugin-livechat/de/" +"documentation/user/streamers/channel) können Sie die Option \"{{% " +"livechat_label moderation_delay %}}\" einstellen:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "![Screenshot of the channel option form, with a field to configure the moderation delay.](/peertube-plugin-livechat/images/moderation_delay_channel_option.png?classes=shadow,border&height=400px \"Channel configuration / Moderation delay\")" +msgid "" +"![Screenshot of the channel option form, with a field to configure the " +"moderation delay.](/peertube-plugin-livechat/images/" +"moderation_delay_channel_option.png?classes=shadow,border&height=400px " +"\"Channel configuration / Moderation delay\")" msgstr "" "![Screenshot des Formulars für die Kanaloptionen, mit einem Feld zur " "Konfiguration der Moderationsverzögerung.](/peertube-plugin-livechat/images/" @@ -3484,7 +5641,8 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This value will apply as a default value for all your channel's chatrooms." +msgid "" +"This value will apply as a default value for all your channel's chatrooms." msgstr "Dieser Wert gilt als Standardwert für alle Chaträume deines Kanals." #. type: Plain text @@ -3495,18 +5653,38 @@ msgstr "Wird der Wert auf \"0\" gesetzt, wird die Funktion deaktiviert." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "Setting the value to a positive integer will set the delay, in seconds, to apply to messages. Please avoid setting the value too high. Ideally it should not exceed a few seconds (4 or 5 seconds for example)." -msgstr "Wenn Sie den Wert auf eine positive ganze Zahl setzen, wird die Verzögerung in Sekunden festgelegt, die für die Nachrichten gelten soll. Der Wert sollte nicht zu hoch angesetzt werden. Idealerweise sollte er nicht mehr als ein paar Sekunden betragen (z. B. 4 oder 5 Sekunden)." +msgid "" +"Setting the value to a positive integer will set the delay, in seconds, to " +"apply to messages. Please avoid setting the value too high. Ideally it " +"should not exceed a few seconds (4 or 5 seconds for example)." +msgstr "" +"Wenn Sie den Wert auf eine positive ganze Zahl setzen, wird die Verzögerung " +"in Sekunden festgelegt, die für die Nachrichten gelten soll. Der Wert " +"sollte nicht zu hoch angesetzt werden. Idealerweise sollte er nicht mehr " +"als ein paar Sekunden betragen (z. B. 4 oder 5 Sekunden)." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "To modify the value for an already existing room, just open the room \"configuration\" menu (on top of the chat window), and change the moderation delay value in the configuration form." -msgstr "Um den Wert für einen bereits bestehenden Raum zu ändern, öffnen Sie einfach das Raum-Konfigurationsmenü (oben im Chat-Fenster) und ändern Sie den Wert für die Moderationsverzögerung im Konfigurationsformular." +msgid "" +"To modify the value for an already existing room, just open the room " +"\"configuration\" menu (on top of the chat window), and change the " +"moderation delay value in the configuration form." +msgstr "" +"Um den Wert für einen bereits bestehenden Raum zu ändern, öffnen Sie einfach " +"das Raum-Konfigurationsmenü (oben im Chat-Fenster) und ändern Sie den Wert " +"für die Moderationsverzögerung im Konfigurationsformular." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "Currently, this feature has one known bug: users that join the chat will get all messages, even messages that are still pending for other participants. However, messages sent after they joined will be delayed correctly." -msgstr "Derzeit gibt es bei dieser Funktion einen bekannten Fehler: Benutzer, die dem Chat beitreten, erhalten alle Nachrichten, auch solche, die noch für andere Teilnehmer ausstehen. Allerdings werden Nachrichten, die nach dem Beitritt gesendet werden, korrekt verzögert." +msgid "" +"Currently, this feature has one known bug: users that join the chat will get " +"all messages, even messages that are still pending for other participants. " +"However, messages sent after they joined will be delayed correctly." +msgstr "" +"Derzeit gibt es bei dieser Funktion einen bekannten Fehler: Benutzer, die " +"dem Chat beitreten, erhalten alle Nachrichten, auch solche, die noch für " +"andere Teilnehmer ausstehen. Allerdings werden Nachrichten, die nach dem " +"Beitritt gesendet werden, korrekt verzögert." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md @@ -3516,12 +5694,19 @@ msgstr "Im Chat" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "As a moderator, you will see the remaining time (in seconds) before the message is broadcasted, just besides the message datetime." -msgstr "Als Moderator sehen Sie neben dem Datum der Nachricht auch die verbleibende Zeit (in Sekunden), bevor die Nachricht veröffentlicht wird." +msgid "" +"As a moderator, you will see the remaining time (in seconds) before the " +"message is broadcasted, just besides the message datetime." +msgstr "" +"Als Moderator sehen Sie neben dem Datum der Nachricht auch die verbleibende " +"Zeit (in Sekunden), bevor die Nachricht veröffentlicht wird." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "![Screenshot of a chat message. A timer is displayed next to the message datetime. The timer is in seconds.](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border \"Moderation delay timer\")" +msgid "" +"![Screenshot of a chat message. A timer is displayed next to the message " +"datetime. The timer is in seconds.](/peertube-plugin-livechat/images/" +"moderation_delay_timer.png?classes=shadow,border \"Moderation delay timer\")" msgstr "" "![Screenshot einer Chat-Nachricht. Neben dem Datum der Nachricht wird ein " "Timer angezeigt. Der Timer ist in Sekunden.](/peertube-plugin-livechat/" @@ -3557,8 +5742,14 @@ msgstr "Der Chatbot" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "You can use a chat bot, that will help you for moderation. Check [the chat bot documentation](/peertube-plugin-livechat/documentation/user/streamers/bot) for more information." -msgstr "Sie können einen Chatbot verwenden, der Sie bei der Moderation unterstützt. Weitere Informationen finden Sie in der [Chatbot Dokumentation](/peertube-plugin-livechat/de/documentation/user/streamers/bot)." +msgid "" +"You can use a chat bot, that will help you for moderation. Check [the chat " +"bot documentation](/peertube-plugin-livechat/documentation/user/streamers/" +"bot) for more information." +msgstr "" +"Sie können einen Chatbot verwenden, der Sie bei der Moderation unterstützt. " +"Weitere Informationen finden Sie in der [Chatbot Dokumentation](/peertube-" +"plugin-livechat/de/documentation/user/streamers/bot)." #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3568,59 +5759,105 @@ msgstr "Zugang zu den Moderationswerkzeugen" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "You can access room settings and moderation tools using the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers) at the top of the chat." -msgstr "Über das [Chat Dropdown Menü](/peertube-plugin-livechat/de/documentation/user/viewers) am oberen Rand des Chats haben Sie Zugriff auf die Raumeinstellungen und Moderationswerkzeuge." +msgid "" +"You can access room settings and moderation tools using the [chat dropdown " +"menu](/peertube-plugin-livechat/documentation/user/viewers) at the top of " +"the chat." +msgstr "" +"Über das [Chat Dropdown Menü](/peertube-plugin-livechat/de/documentation/" +"user/viewers) am oberen Rand des Chats haben Sie Zugriff auf die " +"Raumeinstellungen und Moderationswerkzeuge." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "The video owner will be owner of the chat room. This means they can configure the room, delete it, promote other users as admins, ..." -msgstr "Der Videobesitzer ist der Besitzer des Chatraums. Das bedeutet, er kann den Raum konfigurieren, löschen, andere Benutzer als Administratoren befördern, ..." +msgid "" +"The video owner will be owner of the chat room. This means they can " +"configure the room, delete it, promote other users as admins, ..." +msgstr "" +"Der Videobesitzer ist der Besitzer des Chatraums. Das bedeutet, er kann den " +"Raum konfigurieren, löschen, andere Benutzer als Administratoren " +"befördern, ..." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "Starting with livechat v10.0.0, Peertube instance's admins and moderators have no special rights on rooms by default. However, they have a special button available on top of the chat: \"{{% livechat_label promote %}}\". Clicking this button will give them owner access on the room." -msgstr "Ab livechat v10.0.0 haben Admins und Moderatoren der Peertube-Instanz standardmäßig keine besonderen Rechte für Räume. Sie haben jedoch einen speziellen Button oben im Chat zur Verfügung: \"{{% livechat_label promote %}}\". Wenn sie auf diese Schaltfläche klicken, erhalten sie Besitzerrechte für den Raum." +msgid "" +"Starting with livechat v10.0.0, Peertube instance's admins and moderators " +"have no special rights on rooms by default. However, they have a special " +"button available on top of the chat: \"{{% livechat_label promote %}}\". " +"Clicking this button will give them owner access on the room." +msgstr "" +"Ab livechat v10.0.0 haben Admins und Moderatoren der Peertube-Instanz " +"standardmäßig keine besonderen Rechte für Räume. Sie haben jedoch einen " +"speziellen Button oben im Chat zur Verfügung: \"{{% livechat_label promote " +"%}}\". Wenn sie auf diese Schaltfläche klicken, erhalten sie Besitzerrechte " +"für den Raum." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." -msgstr "Sie können [ConverseJS Moderationsbefehle](https://conversejs.org/docs/html/features.html#moderating-chatrooms) verwenden, um den Raum zu moderieren. Wenn Sie den Chat-Raum im Vollbildmodus öffnen, finden Sie oben rechts ein Menü mit speziellen Befehlen." +msgid "" +"You can use [ConverseJS moderation commands](https://conversejs.org/docs/" +"html/features.html#moderating-chatrooms) to moderate the room. When you " +"open the chat room in full screen, there will also be a menu with dedicated " +"commands on the top right." +msgstr "" +"Sie können [ConverseJS Moderationsbefehle](https://conversejs.org/docs/html/" +"features.html#moderating-chatrooms) verwenden, um den Raum zu moderieren. " +"Wenn Sie den Chat-Raum im Vollbildmodus öffnen, finden Sie oben rechts ein " +"Menü mit speziellen Befehlen." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 10.2.0 verfügbar sein." +msgid "" +"You can prevent anonymous users to send messages. In such case, only " +"registered users will be able to talk in the chat." +msgstr "" +"Sie können anonyme Benutzer daran hindern, Nachrichten zu senden. In diesem " +"Fall können nur registrierte Benutzer im Chat schreiben." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." -msgstr "Sie können anonyme Benutzer daran hindern, Nachrichten zu senden. In diesem Fall können nur registrierte Benutzer im Chat schreiben." +msgid "" +"To enable or disable this feature, use the [chat dropdown menu](/peertube-" +"plugin-livechat/documentation/user/viewers), open the \"configure\" menu. " +"In the form, you will find a \"{{% livechat_label " +"livechat_configuration_channel_mute_anonymous_label %}}\" checkbox." +msgstr "" +"Um diese Funktion zu aktivieren oder zu deaktivieren, verwenden Sie das " +"[Chat-Dropdown-Menü](/peertube-plugin-livechat/de/documentation/user/" +"viewers), öffnen Sie das Menü \"Konfigurieren\". In dem Formular finden Sie " +"eine Checkbox \"{{% livechat_label " +"livechat_configuration_channel_mute_anonymous_label %}}\"." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}\" checkbox." -msgstr "Um diese Funktion zu aktivieren oder zu deaktivieren, verwenden Sie das [Chat-Dropdown-Menü](/peertube-plugin-livechat/de/documentation/user/viewers), öffnen Sie das Menü \"Konfigurieren\". In dem Formular finden Sie eine Checkbox \"{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}\"." - -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "![Screenshot of the room configuration form. There is a \"{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}\" checkbox.](/peertube-plugin-livechat/images/configure_mute_anonymous.png?classes=shadow,border&height=400px \"Room configuration / Mute anonymous users\")" +msgid "" +"![Screenshot of the room configuration form. There is a \"{{% livechat_label " +"livechat_configuration_channel_mute_anonymous_label %}}\" checkbox.](/" +"peertube-plugin-livechat/images/configure_mute_anonymous.png?classes=shadow," +"border&height=400px \"Room configuration / Mute anonymous users\")" msgstr "" "![Screenshot des Raumkonfigurationsformulars. Es gibt ein \"{{% " -"livechat_label livechat_configuration_channel_mute_anonymous_label %}}\"" -"-Kontrollkästchen.](/peertube-plugin-livechat/images/" -"configure_mute_anonymous.png?classes=shadow,border&height=400px " -"\"Raumkonfiguration / Anonyme Benutzer stummschalten\")" +"livechat_label livechat_configuration_channel_mute_anonymous_label %}}\"-" +"Kontrollkästchen.](/peertube-plugin-livechat/images/configure_mute_anonymous." +"png?classes=shadow,border&height=400px \"Raumkonfiguration / Anonyme " +"Benutzer stummschalten\")" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "Anonymous users won't have the message field, and will see following prompt: \"{{% livechat_label muted_anonymous_message %}}\"" -msgstr "Anonyme Benutzer haben das Nachrichtenfeld nicht und sehen folgende Aufforderung: \"{{% livechat_label muted_anonymous_message %}}\"" +msgid "" +"Anonymous users won't have the message field, and will see following prompt: " +"\"{{% livechat_label muted_anonymous_message %}}\"" +msgstr "" +"Anonyme Benutzer haben das Nachrichtenfeld nicht und sehen folgende " +"Aufforderung: \"{{% livechat_label muted_anonymous_message %}}\"" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "![Screenshot of a chat session. The current user has no message field. There is a message: \"{{% livechat_label muted_anonymous_message %}}\"](/peertube-plugin-livechat/images/anonymous_muted.png?classes=shadow,border&height=400px \"Room configuration / Muted anonymous users\")" +msgid "" +"![Screenshot of a chat session. The current user has no message field. There " +"is a message: \"{{% livechat_label muted_anonymous_message %}}\"](/peertube-" +"plugin-livechat/images/anonymous_muted.png?classes=shadow," +"border&height=400px \"Room configuration / Muted anonymous users\")" msgstr "" "![Screenshot einer Chatsitzung. Der aktuelle Benutzer hat kein " "Nachrichtenfeld. Es gibt eine Nachricht: \"{{% livechat_label " @@ -3630,18 +5867,34 @@ msgstr "" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "When this feature is enabled, anonymous users will be assigned the \"visitor\" role. You can change their role to \"participant\" if you want to allow some of them to talk." -msgstr "Wenn diese Funktion aktiviert ist, wird anonymen Benutzern die Rolle \"Besucher\" zugewiesen. Sie können deren Rolle in \"Teilnehmer\" ändern, wenn Sie einigen von ihnen erlauben wollen, zu schreiben." +msgid "" +"When this feature is enabled, anonymous users will be assigned the " +"\"visitor\" role. You can change their role to \"participant\" if you want " +"to allow some of them to talk." +msgstr "" +"Wenn diese Funktion aktiviert ist, wird anonymen Benutzern die Rolle " +"\"Besucher\" zugewiesen. Sie können deren Rolle in \"Teilnehmer\" ändern, " +"wenn Sie einigen von ihnen erlauben wollen, zu schreiben." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "If you change the room configuration, all anonymous users will be muted or unmuted." -msgstr "Wenn Sie die Raumkonfiguration ändern, werden alle anonymen Benutzer stummgeschaltet oder die Stummschaltung aufgehoben." +msgid "" +"If you change the room configuration, all anonymous users will be muted or " +"unmuted." +msgstr "" +"Wenn Sie die Raumkonfiguration ändern, werden alle anonymen Benutzer " +"stummgeschaltet oder die Stummschaltung aufgehoben." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "You can choose to enable or disable this feature for new chatrooms on the [channel configuration page](/peertube-plugin-livechat/documentation/user/streamers/channel)." -msgstr "Sie können diese Funktion für neue Chaträume auf der [Kanal-Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/streamers/channel) aktivieren oder deaktivieren." +msgid "" +"You can choose to enable or disable this feature for new chatrooms on the " +"[channel configuration page](/peertube-plugin-livechat/documentation/user/" +"streamers/channel)." +msgstr "" +"Sie können diese Funktion für neue Chaträume auf der [Kanal-" +"Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/" +"streamers/channel) aktivieren oder deaktivieren." #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3651,23 +5904,41 @@ msgstr "Rollen und Zugehörigkeiten" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "There are several roles that can be assignated to users in chat rooms: owner, moderators, member, ..." -msgstr "Es gibt verschiedene Rollen, die Benutzern in Chaträumen zugewiesen werden können: Eigentümer, Moderatoren, Mitglieder, ..." +msgid "" +"There are several roles that can be assignated to users in chat rooms: " +"owner, moderators, member, ..." +msgstr "" +"Es gibt verschiedene Rollen, die Benutzern in Chaträumen zugewiesen werden " +"können: Eigentümer, Moderatoren, Mitglieder, ..." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can promote users as moderators, if you need some help." -msgstr "Sie können Benutzer zu Moderatoren befördern, wenn Sie Hilfe benötigen." +msgstr "" +"Sie können Benutzer zu Moderatoren befördern, wenn Sie Hilfe benötigen." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "It is possible to anonymize moderation actions, to avoid disclosing who is banning/kicking/… occupants." -msgstr "Es ist möglich, Moderationsaktionen zu anonymisieren, um zu vermeiden, dass bekannt wird, wer Teilnehmer bannt/verweist/..." +msgid "" +"It is possible to anonymize moderation actions, to avoid disclosing who is " +"banning/kicking/… occupants." +msgstr "" +"Es ist möglich, Moderationsaktionen zu anonymisieren, um zu vermeiden, dass " +"bekannt wird, wer Teilnehmer bannt/verweist/..." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label livechat_configuration_channel_anonymize_moderation_label %}}\" checkbox." -msgstr "Um diese Funktion zu aktivieren oder zu deaktivieren, verwenden Sie das [Chat-Dropdown-Menü](/peertube-plugin-livechat/de/documentation/user/viewers), öffnen Sie das Menü \"Konfigurieren\". In dem Formular finden Sie eine Checkbox \"{{% livechat_label livechat_configuration_channel_anonymize_moderation_label %}}\"." +msgid "" +"To enable or disable this feature, use the [chat dropdown menu](/peertube-" +"plugin-livechat/documentation/user/viewers), open the \"configure\" menu. " +"In the form, you will find a \"{{% livechat_label " +"livechat_configuration_channel_anonymize_moderation_label %}}\" checkbox." +msgstr "" +"Um diese Funktion zu aktivieren oder zu deaktivieren, verwenden Sie das " +"[Chat-Dropdown-Menü](/peertube-plugin-livechat/de/documentation/user/" +"viewers), öffnen Sie das Menü \"Konfigurieren\". In dem Formular finden Sie " +"eine Checkbox \"{{% livechat_label " +"livechat_configuration_channel_anonymize_moderation_label %}}\"." #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3677,8 +5948,12 @@ msgstr "Im Nachrichtenverlauf eines Teilnehmers suchen" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "As a room admin or owner, you can search all messages sent by a given participant." -msgstr "Als Raumadministrator oder -besitzer können Sie alle von einem bestimmten Teilnehmer gesendeten Nachrichten durchsuchen." +msgid "" +"As a room admin or owner, you can search all messages sent by a given " +"participant." +msgstr "" +"Als Raumadministrator oder -besitzer können Sie alle von einem bestimmten " +"Teilnehmer gesendeten Nachrichten durchsuchen." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3687,17 +5962,29 @@ msgstr "Dazu haben Sie mehrere Möglichkeiten:" #. type: Bullet: '* ' #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "using the \"{{% livechat_label search_occupant_message %}}\" action in the dropdown menu besides participants in the sidebar" -msgstr "die Aktion \"{{% livechat_label search_occupant_message %}}\" im Dropdown-Menü neben den Teilnehmern in der Seitenleiste verwenden" +msgid "" +"using the \"{{% livechat_label search_occupant_message %}}\" action in the " +"dropdown menu besides participants in the sidebar" +msgstr "" +"die Aktion \"{{% livechat_label search_occupant_message %}}\" im Dropdown-" +"Menü neben den Teilnehmern in der Seitenleiste verwenden" #. type: Bullet: '* ' #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "using the \"{{% livechat_label search_occupant_message %}}\" action in the dropdown menu besides chat messages" -msgstr "die Aktion \"{{% livechat_label search_occupant_message %}}\" im Dropdown-Menü neben den Chat-Nachrichten verwenden" +msgid "" +"using the \"{{% livechat_label search_occupant_message %}}\" action in the " +"dropdown menu besides chat messages" +msgstr "" +"die Aktion \"{{% livechat_label search_occupant_message %}}\" im Dropdown-" +"Menü neben den Chat-Nachrichten verwenden" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "![Screenshot of a chat session. The moderator has open the message menu, and there is a \"{{% livechat_label search_occupant_message %}}\" button.](/peertube-plugin-livechat/images/message_search.png?classes=shadow,border&height=200px \"Message history search\")" +msgid "" +"![Screenshot of a chat session. The moderator has open the message menu, and " +"there is a \"{{% livechat_label search_occupant_message %}}\" button.](/" +"peertube-plugin-livechat/images/message_search.png?classes=shadow," +"border&height=200px \"Message history search\")" msgstr "" "![Screenshot einer Chatsitzung. Der Moderator hat das Nachrichtenmenü " "geöffnet, und es gibt eine Schaltfläche \"{{% livechat_label " @@ -3709,35 +5996,63 @@ msgstr "" #: build/documentation/pot_in/documentation/user/streamers/moderation.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "To have more space and better readability, open the chat in full-page mode." -msgstr "Um mehr Platz und eine bessere Lesbarkeit zu erhalten, öffnen Sie den Chat im neuen Fenster." +msgid "" +"To have more space and better readability, open the chat in full-page mode." +msgstr "" +"Um mehr Platz und eine bessere Lesbarkeit zu erhalten, öffnen Sie den Chat " +"im neuen Fenster." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "In the search results, there are several informations that are shown at the right of the participant nickname:" -msgstr "In den Suchergebnissen werden rechts neben dem Spitznamen des Teilnehmers verschiedene Informationen angezeigt:" +msgid "" +"In the search results, there are several informations that are shown at the " +"right of the participant nickname:" +msgstr "" +"In den Suchergebnissen werden rechts neben dem Spitznamen des Teilnehmers " +"verschiedene Informationen angezeigt:" #. type: Bullet: '* ' #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "if the current nickname is different than the nickname when the participant has sent the message, the original nickname will be shown" -msgstr "wenn der aktuelle Nickname nicht mit dem Nicknamen übereinstimmt, unter dem der Teilnehmer die Nachricht gesendet hat, wird der ursprüngliche Nickname angezeigt" +msgid "" +"if the current nickname is different than the nickname when the participant " +"has sent the message, the original nickname will be shown" +msgstr "" +"wenn der aktuelle Nickname nicht mit dem Nicknamen übereinstimmt, unter dem " +"der Teilnehmer die Nachricht gesendet hat, wird der ursprüngliche Nickname " +"angezeigt" #. type: Bullet: '* ' #: build/documentation/pot_in/documentation/user/streamers/moderation.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "you will see the [JID (Jabber ID)](https://xmpp.org/extensions/xep-0029.html) of the participant" -msgstr "sehen Sie die [JID (Jabber ID)](https://xmpp.org/extensions/xep-0029.html) des Teilnehmers" +msgid "" +"you will see the [JID (Jabber ID)](https://xmpp.org/extensions/xep-0029." +"html) of the participant" +msgstr "" +"sehen Sie die [JID (Jabber ID)](https://xmpp.org/extensions/xep-0029.html) " +"des Teilnehmers" #. type: Bullet: '* ' #: build/documentation/pot_in/documentation/user/streamers/moderation.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "you will also see the [occupant-id](https://xmpp.org/extensions/xep-0421.html) of the participant" -msgstr "Sie sehen auch die [occupant-id](https://xmpp.org/extensions/xep-0421.html) des Teilnehmers" +msgid "" +"you will also see the [occupant-id](https://xmpp.org/extensions/xep-0421." +"html) of the participant" +msgstr "" +"Sie sehen auch die [occupant-id](https://xmpp.org/extensions/xep-0421.html) " +"des Teilnehmers" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "The search result will also include all messages related to participants who had the same nickname. You can differenciate them by comparing [JID](https://xmpp.org/extensions/xep-0029.html) and [occupant-id](https://xmpp.org/extensions/xep-0421.html)." -msgstr "Das Suchergebnis enthält auch alle Nachrichten, die sich auf Teilnehmer beziehen, die denselben Spitznamen hatten. Sie können sie unterscheiden, indem Sie [JID](https://xmpp.org/extensions/xep-0029.html) und [occupant-id](https://xmpp.org/extensions/xep-0421.html) vergleichen." +msgid "" +"The search result will also include all messages related to participants who " +"had the same nickname. You can differenciate them by comparing [JID]" +"(https://xmpp.org/extensions/xep-0029.html) and [occupant-id](https://xmpp." +"org/extensions/xep-0421.html)." +msgstr "" +"Das Suchergebnis enthält auch alle Nachrichten, die sich auf Teilnehmer " +"beziehen, die denselben Spitznamen hatten. Sie können sie unterscheiden, " +"indem Sie [JID](https://xmpp.org/extensions/xep-0029.html) und [occupant-id]" +"(https://xmpp.org/extensions/xep-0421.html) vergleichen." #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3747,8 +6062,12 @@ msgstr "Rauminhalt löschen" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "You can delete old rooms: join the room, and use the menu on the top to destroy the room." -msgstr "Sie können alte Räume löschen: Treten Sie dem Raum bei, und verwenden Sie das Menü oben, um den Raum zu löschen." +msgid "" +"You can delete old rooms: join the room, and use the menu on the top to " +"destroy the room." +msgstr "" +"Sie können alte Räume löschen: Treten Sie dem Raum bei, und verwenden Sie " +"das Menü oben, um den Raum zu löschen." #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3758,18 +6077,31 @@ msgstr "Instanz-Moderation" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "As Peertube instance moderator or administrator, you will probably need to check that your users are not behaving badly." -msgstr "Als Moderator oder Administrator einer Peertube-Instanz müssen Sie wahrscheinlich überprüfen, dass sich Ihre Benutzer nicht schlecht benehmen." +msgid "" +"As Peertube instance moderator or administrator, you will probably need to " +"check that your users are not behaving badly." +msgstr "" +"Als Moderator oder Administrator einer Peertube-Instanz müssen Sie " +"wahrscheinlich überprüfen, dass sich Ihre Benutzer nicht schlecht benehmen." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "You can list all existing chatrooms: in the plugin settings screen, there is a button «List rooms»." -msgstr "Sie können alle bestehenden Chaträume auflisten: in den Einstellungen des Plugins gibt es eine Schaltfläche «Räume auflisten»." +msgid "" +"You can list all existing chatrooms: in the plugin settings screen, there is " +"a button «List rooms»." +msgstr "" +"Sie können alle bestehenden Chaträume auflisten: in den Einstellungen des " +"Plugins gibt es eine Schaltfläche «Räume auflisten»." #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md -msgid "From there, you can also promote yourself as room moderator by using the \"{{% livechat_label promote %}}\" button on the right." -msgstr "Von dort aus kannst du dich auch als Moderator des Raums bewerben, indem du die Schaltfläche \"{{% livechat_label promote %}}\" auf der rechten Seite benutzt." +msgid "" +"From there, you can also promote yourself as room moderator by using the " +"\"{{% livechat_label promote %}}\" button on the right." +msgstr "" +"Von dort aus kannst du dich auch als Moderator des Raums bewerben, indem du " +"die Schaltfläche \"{{% livechat_label promote %}}\" auf der rechten Seite " +"benutzt." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3785,8 +6117,15 @@ msgstr "Moderationsnotizen" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "The livechat plugin includes a Moderator Notes Application: you can write some notes, that could be associated to chat participants. Every room's admins have access to these notes, so they can edit them collaboratively." -msgstr "Das Livechat Plugin enthält eine Anwendung für Moderator-Notizen: Sie können einige Notizen schreiben, die den Chat-Teilnehmern zugeordnet werden können. Die Administratoren jedes Raums haben Zugriff auf diese Notizen, so dass sie diese gemeinsam bearbeiten können." +msgid "" +"The livechat plugin includes a Moderator Notes Application: you can write " +"some notes, that could be associated to chat participants. Every room's " +"admins have access to these notes, so they can edit them collaboratively." +msgstr "" +"Das Livechat Plugin enthält eine Anwendung für Moderator-Notizen: Sie können " +"einige Notizen schreiben, die den Chat-Teilnehmern zugeordnet werden " +"können. Die Administratoren jedes Raums haben Zugriff auf diese Notizen, so " +"dass sie diese gemeinsam bearbeiten können." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3801,7 +6140,9 @@ msgstr "einige Notizen zwischen Moderatoren austauschen" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md msgid "take notes about participants that were kicked or caused troubles" -msgstr "Notizen über Teilnehmer machen, die aus dem Chat geworfen wurden oder Probleme verursachten" +msgstr "" +"Notizen über Teilnehmer machen, die aus dem Chat geworfen wurden oder " +"Probleme verursachten" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3823,12 +6164,21 @@ msgstr "Öffnen der Anwendung Moderationsnotizen" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "To open the Moderator Notes Application, there is a \"{{% livechat_label \"moderator_notes\" %}}\" button in the top chat menu:" -msgstr "Um die Anwendung Moderationsnotizen zu öffnen, gibt es eine Schaltfläche \"{{% livechat_label \"moderator_notes\" %}}\" im oberen Chatmenü:" +msgid "" +"To open the Moderator Notes Application, there is a \"{{% livechat_label " +"\"moderator_notes\" %}}\" button in the top chat menu:" +msgstr "" +"Um die Anwendung Moderationsnotizen zu öffnen, gibt es eine Schaltfläche " +"\"{{% livechat_label \"moderator_notes\" %}}\" im oberen Chatmenü:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "![Screenshot of a Peertube video, with the chat on the right. The chat top menu is open, with a \"{{% livechat_label \"moderator_notes\" %}}\" button.](/peertube-plugin-livechat/images/moderation_notes_open_app_video.png?classes=shadow,border&height=200px \"Opening the Moderator Notes Application\")" +msgid "" +"![Screenshot of a Peertube video, with the chat on the right. The chat top " +"menu is open, with a \"{{% livechat_label \"moderator_notes\" %}}\" button.]" +"(/peertube-plugin-livechat/images/moderation_notes_open_app_video.png?" +"classes=shadow,border&height=200px \"Opening the Moderator Notes " +"Application\")" msgstr "" "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das " "obere Menü des Chats ist geöffnet, mit einer \"{{% livechat_label " @@ -3838,22 +6188,33 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "![Screenshot of a Peertube chat, fullscreen. The chat top menu open, with a \"{{% livechat_label \"moderator_notes\" %}}\" button.](/peertube-plugin-livechat/images/moderation_notes_open_app_fullpage.png?classes=shadow,border&height=200px \"Opening the Moderator Notes Application\")" +msgid "" +"![Screenshot of a Peertube chat, fullscreen. The chat top menu open, with a " +"\"{{% livechat_label \"moderator_notes\" %}}\" button.](/peertube-plugin-" +"livechat/images/moderation_notes_open_app_fullpage.png?classes=shadow," +"border&height=200px \"Opening the Moderator Notes Application\")" msgstr "" "![Screenshot eines Peertube-Chats, Vollbild. Das obere Menü des Chats ist " -"geöffnet, mit einer \"{{% livechat_label \"moderator_notes\" %}}\"" -"-Schaltfläche.](/peertube-plugin-livechat/images/" +"geöffnet, mit einer \"{{% livechat_label \"moderator_notes\" %}}\"-" +"Schaltfläche.](/peertube-plugin-livechat/images/" "moderation_notes_open_app_fullpage.png?classes=shadow,border&height=200px " "\"Öffnen des Moderator Notizen Programms\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md msgid "Clicking this button will toggle the Application display:" -msgstr "Wenn Sie auf diese Schaltfläche klicken, wird die Anzeige der Anwendung umgeschaltet:" +msgstr "" +"Wenn Sie auf diese Schaltfläche klicken, wird die Anzeige der Anwendung " +"umgeschaltet:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "![Screenshot of a Peertube video, with the chat on the right. The moderation notes application is open. There are several notes, some of them are associated to users.](/peertube-plugin-livechat/images/moderator_notes_app_video_1.png?classes=shadow,border&height=200px \"Moderator Notes Application\")" +msgid "" +"![Screenshot of a Peertube video, with the chat on the right. The moderation " +"notes application is open. There are several notes, some of them are " +"associated to users.](/peertube-plugin-livechat/images/" +"moderator_notes_app_video_1.png?classes=shadow,border&height=200px " +"\"Moderator Notes Application\")" msgstr "" "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Die " "Anwendung für Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, " @@ -3863,7 +6224,11 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "![Screenshot of a Peertube chat, fullscreen. The moderation notes application is open. There are several notes, some of them are associated to users.](/peertube-plugin-livechat/images/moderator_notes_app_fullpage_1.png?classes=shadow,border&height=200px \"Moderator Notes Application\")" +msgid "" +"![Screenshot of a Peertube chat, fullscreen. The moderation notes " +"application is open. There are several notes, some of them are associated to " +"users.](/peertube-plugin-livechat/images/moderator_notes_app_fullpage_1.png?" +"classes=shadow,border&height=200px \"Moderator Notes Application\")" msgstr "" "![Screenshot eines Peertube-Chats, Vollbild. Die Anwendung für " "Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, einige davon sind " @@ -3881,13 +6246,23 @@ msgstr "Zugriffsrechte" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "Every room's admins have access to this Application (read and write access)." -msgstr "Die Administratoren jedes Raums haben Zugriff auf diese Anwendung (Lese- und Schreibzugriff)." +msgid "" +"Every room's admins have access to this Application (read and write access)." +msgstr "" +"Die Administratoren jedes Raums haben Zugriff auf diese Anwendung (Lese- und " +"Schreibzugriff)." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "When you promote someone as room admin or owner, they gets instant access to this Application. When you remove admin or owner rights to someone, they instantly lose access to this Application." -msgstr "Wenn Sie jemanden zum Raumadministrator oder -besitzer befördern, erhält er sofortigen Zugang zu dieser Anwendung. Wenn Sie jemandem die Admin- oder Eigentümerrechte entziehen, verliert er sofort den Zugang zu dieser Anwendung." +msgid "" +"When you promote someone as room admin or owner, they gets instant access to " +"this Application. When you remove admin or owner rights to someone, they " +"instantly lose access to this Application." +msgstr "" +"Wenn Sie jemanden zum Raumadministrator oder -besitzer befördern, erhält er " +"sofortigen Zugang zu dieser Anwendung. Wenn Sie jemandem die Admin- oder " +"Eigentümerrechte entziehen, verliert er sofort den Zugang zu dieser " +"Anwendung." #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3902,13 +6277,26 @@ msgstr "Notizen sind nur in dem Raum verfügbar, in dem Sie sie erstellt haben." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "Chatrooms can be releated to video or channel. If you want to keep notes from one video to another, please consider using rooms associated to channels." -msgstr "Chaträume können einem Video oder einem Kanal zugeordnet werden. Wenn Sie Notizen von einem Video zum anderen aufbewahren möchten, sollten Sie Räume verwenden, die mit Kanälen verbunden sind." +msgid "" +"Chatrooms can be releated to video or channel. If you want to keep notes " +"from one video to another, please consider using rooms associated to " +"channels." +msgstr "" +"Chaträume können einem Video oder einem Kanal zugeordnet werden. Wenn Sie " +"Notizen von einem Video zum anderen aufbewahren möchten, sollten Sie Räume " +"verwenden, die mit Kanälen verbunden sind." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "Currently the video vs channel rooms is an instance-wide settings. Only Peertube admins can change it, and it applies to all chatrooms. In the future, this choice will be added in your channel's options." -msgstr "Derzeit ist die Einstellung Video vs. Kanalräume eine instanzweite Einstellung. Nur Peertube-Administratoren können diese Einstellung ändern, und sie gilt für alle Chaträume. In der Zukunft wird diese Wahl in den Optionen Ihres Channels hinzugefügt werden." +msgid "" +"Currently the video vs channel rooms is an instance-wide settings. Only " +"Peertube admins can change it, and it applies to all chatrooms. In the " +"future, this choice will be added in your channel's options." +msgstr "" +"Derzeit ist die Einstellung Video vs. Kanalräume eine instanzweite " +"Einstellung. Nur Peertube-Administratoren können diese Einstellung ändern, " +"und sie gilt für alle Chaträume. In der Zukunft wird diese Wahl in den " +"Optionen Ihres Channels hinzugefügt werden." #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3924,34 +6312,57 @@ msgstr "Notizen erstellen/bearbeiten" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "You can use the plus button on the top to create a new note. You can also edit existing notes using the edit button, or delate any note." -msgstr "Mit der Plus-Schaltfläche am oberen Rand können Sie eine neue Notiz erstellen. Sie können auch bestehende Notizen mit der Schaltfläche \"Bearbeiten\" bearbeiten oder jede Notiz löschen." +msgid "" +"You can use the plus button on the top to create a new note. You can also " +"edit existing notes using the edit button, or delate any note." +msgstr "" +"Mit der Plus-Schaltfläche am oberen Rand können Sie eine neue Notiz " +"erstellen. Sie können auch bestehende Notizen mit der Schaltfläche " +"\"Bearbeiten\" bearbeiten oder jede Notiz löschen." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "All modification are instantly visible in all your browser tabs, and for all room's admins." -msgstr "Alle Änderungen sind sofort in allen Registerkarten Ihres Browsers und für alle Raumadministratoren sichtbar." +msgid "" +"All modification are instantly visible in all your browser tabs, and for all " +"room's admins." +msgstr "" +"Alle Änderungen sind sofort in allen Registerkarten Ihres Browsers und für " +"alle Raumadministratoren sichtbar." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md msgid "You can create a note associated to a participant in several ways:" -msgstr "Sie können eine Notiz zu einem Teilnehmer auf verschiedene Weise erstellen:" +msgstr "" +"Sie können eine Notiz zu einem Teilnehmer auf verschiedene Weise erstellen:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "using the \"{{% livechat_label moderator_note_create_for_participant %}}\" action in the dropdown menu besides participants in the sidebar" -msgstr "die Aktion \"{{% livechat_label moderator_note_create_for_participant %}}\" im Dropdown-Menü neben den Teilnehmern in der Seitenleiste verwenden" +msgid "" +"using the \"{{% livechat_label moderator_note_create_for_participant %}}\" " +"action in the dropdown menu besides participants in the sidebar" +msgstr "" +"die Aktion \"{{% livechat_label moderator_note_create_for_participant %}}\" " +"im Dropdown-Menü neben den Teilnehmern in der Seitenleiste verwenden" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "using the \"{{% livechat_label moderator_note_create_for_participant %}}\" action in the dropdown menu besides chat messages" -msgstr "Verwendung der Aktion \"{{% livechat_label moderator_note_create_for_participant %}}\" im Dropdown-Menü neben den Chat-Nachrichten" +msgid "" +"using the \"{{% livechat_label moderator_note_create_for_participant %}}\" " +"action in the dropdown menu besides chat messages" +msgstr "" +"Verwendung der Aktion \"{{% livechat_label " +"moderator_note_create_for_participant %}}\" im Dropdown-Menü neben den Chat-" +"Nachrichten" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "When a note is associated to a participant, you will see their nickname and avatar on the top of the note." -msgstr "Wenn eine Notiz mit einem Teilnehmer verknüpft ist, sehen Sie dessen Spitznamen und Avatar oben in der Notiz." +msgid "" +"When a note is associated to a participant, you will see their nickname and " +"avatar on the top of the note." +msgstr "" +"Wenn eine Notiz mit einem Teilnehmer verknüpft ist, sehen Sie dessen " +"Spitznamen und Avatar oben in der Notiz." #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3961,53 +6372,94 @@ msgstr "Notizen filtern" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "You can filter notes to find all notes related to a given participant in several ways:" -msgstr "Sie können die Notizen filtern, um alle Notizen zu einem bestimmten Teilnehmer zu finden, und haben dabei mehrere Möglichkeiten:" +msgid "" +"You can filter notes to find all notes related to a given participant in " +"several ways:" +msgstr "" +"Sie können die Notizen filtern, um alle Notizen zu einem bestimmten " +"Teilnehmer zu finden, und haben dabei mehrere Möglichkeiten:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "click on the \"{{% livechat_label moderator_note_search_for_participant %}}\" button that is available on notes to find all notes related to the same participant" -msgstr "Klicken Sie auf die Schaltfläche \"{{% livechat_label moderator_note_search_for_participant %}}\", die auf den Notizen verfügbar ist, um alle Notizen zu finden, die sich auf denselben Teilnehmer beziehen" +msgid "" +"click on the \"{{% livechat_label moderator_note_search_for_participant " +"%}}\" button that is available on notes to find all notes related to the " +"same participant" +msgstr "" +"Klicken Sie auf die Schaltfläche \"{{% livechat_label " +"moderator_note_search_for_participant %}}\", die auf den Notizen verfügbar " +"ist, um alle Notizen zu finden, die sich auf denselben Teilnehmer beziehen" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "click on the \"{{% livechat_label moderator_note_search_for_participant %}}\" button in the dropdown menu besides participants in the sidebar" -msgstr "auf die Schaltfläche \"{{% livechat_label moderator_note_search_for_participant %}}\" im Dropdown-Menü neben den Teilnehmern in der Seitenleiste klicken" +msgid "" +"click on the \"{{% livechat_label moderator_note_search_for_participant " +"%}}\" button in the dropdown menu besides participants in the sidebar" +msgstr "" +"auf die Schaltfläche \"{{% livechat_label " +"moderator_note_search_for_participant %}}\" im Dropdown-Menü neben den " +"Teilnehmern in der Seitenleiste klicken" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "click on the \"{{% livechat_label moderator_note_search_for_participant %}}\" button in the dropdown menu besides chat messages" -msgstr "Klicken Sie auf die Schaltfläche \"{{% livechat_label moderator_note_search_for_participant %}}\" im Dropdown-Menü neben den Chat-Nachrichten" +msgid "" +"click on the \"{{% livechat_label moderator_note_search_for_participant " +"%}}\" button in the dropdown menu besides chat messages" +msgstr "" +"Klicken Sie auf die Schaltfläche \"{{% livechat_label " +"moderator_note_search_for_participant %}}\" im Dropdown-Menü neben den Chat-" +"Nachrichten" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md msgid "You can remove the filter by clicking on the close button." -msgstr "Sie können den Filter entfernen, indem Sie auf die Schaltfläche \"Schließen\" klicken." +msgstr "" +"Sie können den Filter entfernen, indem Sie auf die Schaltfläche " +"\"Schließen\" klicken." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "![Screenshot of the note application, with a filter enabled for user \"Mike\". The only notes that are shown are the notes for the Mike user.](/peertube-plugin-livechat/images/moderation_notes_filters.png?classes=shadow,border&height=200px \"Moderator Notes Application - filtering\")" +msgid "" +"![Screenshot of the note application, with a filter enabled for user " +"\"Mike\". The only notes that are shown are the notes for the Mike user.](/" +"peertube-plugin-livechat/images/moderation_notes_filters.png?classes=shadow," +"border&height=200px \"Moderator Notes Application - filtering\")" msgstr "" "![Screenshot der Notizen-Anwendung, mit einem aktivierten Filter für den " "Benutzer \"Mike\". Es werden nur die Notizen für den Benutzer \"Mike\" " -"angezeigt.](/peertube-plugin-livechat/images/" -"moderation_notes_filters.png?classes=shadow,border&height=200px \"Moderator " -"Notizen Programm - Filtern\")" +"angezeigt.](/peertube-plugin-livechat/images/moderation_notes_filters.png?" +"classes=shadow,border&height=200px \"Moderator Notizen Programm - Filtern\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "When you filters notes on a participant, there are several informations that are shown at the right of the participant nickname:" -msgstr "Wenn Sie Notizen zu einem Teilnehmer filtern, werden rechts neben dem Spitznamen des Teilnehmers verschiedene Informationen angezeigt:" +msgid "" +"When you filters notes on a participant, there are several informations that " +"are shown at the right of the participant nickname:" +msgstr "" +"Wenn Sie Notizen zu einem Teilnehmer filtern, werden rechts neben dem " +"Spitznamen des Teilnehmers verschiedene Informationen angezeigt:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "if the current nickname is different than the nickname when you created the note, the original nickname will be shown" -msgstr "wenn der aktuelle Spitzname nicht mit dem Spitznamen übereinstimmt, unter dem Sie die Notiz erstellt haben, wird der ursprüngliche Spitzname angezeigt" +msgid "" +"if the current nickname is different than the nickname when you created the " +"note, the original nickname will be shown" +msgstr "" +"wenn der aktuelle Spitzname nicht mit dem Spitznamen übereinstimmt, unter " +"dem Sie die Notiz erstellt haben, wird der ursprüngliche Spitzname angezeigt" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "The search result will also include all notes related to participants who had the same nickname. So you can also take note for anonymous users (who don't have any consistent JID or occupant-id). You can differenciate them by comparing JID and occupant-id." -msgstr "Das Suchergebnis enthält auch alle Notizen zu Teilnehmern, die denselben Spitznamen hatten. Sie können also auch anonyme Benutzer (die keine einheitliche JID oder occupant-id haben) notieren. Sie können sie durch den Vergleich von JID und occupant-id unterscheiden." +msgid "" +"The search result will also include all notes related to participants who " +"had the same nickname. So you can also take note for anonymous users (who " +"don't have any consistent JID or occupant-id). You can differenciate them " +"by comparing JID and occupant-id." +msgstr "" +"Das Suchergebnis enthält auch alle Notizen zu Teilnehmern, die denselben " +"Spitznamen hatten. Sie können also auch anonyme Benutzer (die keine " +"einheitliche JID oder occupant-id haben) notieren. Sie können sie durch den " +"Vergleich von JID und occupant-id unterscheiden." #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -4023,8 +6475,8 @@ msgstr "Sie können Notizen einfach per Drag & Drop sortieren." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." -msgstr "Sie können Umfragen erstellen, um die Zuschauer nach ihrer Meinung zu fragen." +msgid "You can create polls to ask viewers their opinion" +msgstr "Sie können Umfragen erstellen, um die Zuschauer nach ihrer Meinung zu fragen" #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4040,22 +6492,39 @@ msgstr "Eine Umfrage erstellen" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "You can create a new poll by using the \"{{% livechat_label new_poll %}}\" action in the chat top menu:" -msgstr "Sie können eine neue Umfrage erstellen, indem Sie die Aktion \"{{% livechat_label new_poll %}}\" im oberen Menü des Chats verwenden:" +msgid "" +"You can create a new poll by using the \"{{% livechat_label new_poll %}}\" " +"action in the chat top menu:" +msgstr "" +"Sie können eine neue Umfrage erstellen, indem Sie die Aktion \"{{% " +"livechat_label new_poll %}}\" im oberen Menü des Chats verwenden:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "![Screenshot of a \"{{% livechat_label new_poll %}}\" form. The form contains several fields: question, duration, choices, …](/peertube-plugin-livechat/images/polls_form.png?classes=shadow,border&height=200px \"Poll form\")" +msgid "" +"![Screenshot of a \"{{% livechat_label new_poll %}}\" form. The form " +"contains several fields: question, duration, choices, …](/peertube-plugin-" +"livechat/images/polls_form.png?classes=shadow,border&height=200px \"Poll " +"form\")" msgstr "" "![Screenshot eines \"{{% livechat_label new_poll %}}\"-Formulars. Das " -"Formular enthält mehrere Felder: Frage, Dauer, Auswahlmöglichkeiten, " -"...](/peertube-plugin-livechat/images/" -"polls_form.png?classes=shadow,border&height=200px \"Umfrageformular\")" +"Formular enthält mehrere Felder: Frage, Dauer, Auswahlmöglichkeiten, ...](/" +"peertube-plugin-livechat/images/polls_form.png?classes=shadow," +"border&height=200px \"Umfrageformular\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "This poll feature should not be considered as a reliable voting system. It is easy to cheat. There is no mechanism to prevent anonymous users to vote multiple times by just reloading the chat. Votes are never fully anonymous, someone having access to the server could see who voted for what choice." -msgstr "Diese Abstimmungsfunktion sollte nicht als zuverlässiges Abstimmungssystem betrachtet werden. Es ist leicht zu betrügen. Es gibt keinen Mechanismus, der anonyme Benutzer daran hindert, mehrfach abzustimmen, indem sie einfach den Chat neu laden. Abstimmungen sind nie vollständig anonym, jemand mit Zugang zum Server könnte sehen, wer für welche Wahl gestimmt hat." +msgid "" +"This poll feature should not be considered as a reliable voting system. It " +"is easy to cheat. There is no mechanism to prevent anonymous users to vote " +"multiple times by just reloading the chat. Votes are never fully anonymous, " +"someone having access to the server could see who voted for what choice." +msgstr "" +"Diese Abstimmungsfunktion sollte nicht als zuverlässiges Abstimmungssystem " +"betrachtet werden. Es ist leicht zu betrügen. Es gibt keinen Mechanismus, " +"der anonyme Benutzer daran hindert, mehrfach abzustimmen, indem sie einfach " +"den Chat neu laden. Abstimmungen sind nie vollständig anonym, jemand mit " +"Zugang zum Server könnte sehen, wer für welche Wahl gestimmt hat." #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4070,23 +6539,35 @@ msgstr "Füllen Sie die Formularfelder aus:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "\"{{% livechat_label poll_question %}}\": the question to ask to you viewers" -msgstr "\"{{% livechat_label poll_question %}}\": die Frage, die den Zuschauern gestellt werden soll" +msgid "" +"\"{{% livechat_label poll_question %}}\": the question to ask to you viewers" +msgstr "" +"\"{{% livechat_label poll_question %}}\": die Frage, die den Zuschauern " +"gestellt werden soll" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "\"{{% livechat_label poll_duration %}}\": the duration for which viewers can vote" -msgstr "\"{{% livechat_label poll_duration %}}\": die Dauer, in der die Zuschauer abstimmen können" +msgid "" +"\"{{% livechat_label poll_duration %}}\": the duration for which viewers can " +"vote" +msgstr "" +"\"{{% livechat_label poll_duration %}}\": die Dauer, in der die Zuschauer " +"abstimmen können" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "\"{{% livechat_label poll_anonymous_results %}}\": if checked, votes won't be publicly visible in the chat" -msgstr "\"{{% livechat_label poll_anonymous_results %}}\": wenn ausgewählt, werden Abstimmungen im Chat nicht öffentlich sichtbar sein" +msgid "" +"\"{{% livechat_label poll_anonymous_results %}}\": if checked, votes won't " +"be publicly visible in the chat" +msgstr "" +"\"{{% livechat_label poll_anonymous_results %}}\": wenn ausgewählt, werden " +"Abstimmungen im Chat nicht öffentlich sichtbar sein" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/polls.md msgid "\"Choice N\": choices that will be presented to viewers" -msgstr "\"Auswahl N\": Auswahlmöglichkeiten, die den Zuschauern präsentiert werden" +msgstr "" +"\"Auswahl N\": Auswahlmöglichkeiten, die den Zuschauern präsentiert werden" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4100,28 +6581,51 @@ msgstr "Sobald Sie das Formular abschicken, wird die Umfrage sofort gestartet." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "If there was a previous unfinished poll, it will end and its result will be shown." -msgstr "Wenn es eine vorherige, noch nicht beendete Umfrage gab, wird diese beendet und ihr Ergebnis angezeigt." +msgid "" +"If there was a previous unfinished poll, it will end and its result will be " +"shown." +msgstr "" +"Wenn es eine vorherige, noch nicht beendete Umfrage gab, wird diese beendet " +"und ihr Ergebnis angezeigt." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md msgid "Every room's admins can create a new poll." -msgstr "Die Administratoren eines jeden Raums können eine neue Umfrage erstellen." +msgstr "" +"Die Administratoren eines jeden Raums können eine neue Umfrage erstellen." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "When you promote someone as room admin or owner, they gets instant access to the \"{{% livechat_label new_poll %}}\" action." -msgstr "Wenn Sie jemanden zum Raumadministrator oder -besitzer befördern, erhält er sofortigen Zugriff auf die Aktion \"{{% livechat_label new_poll %}}\"." +msgid "" +"When you promote someone as room admin or owner, they gets instant access to " +"the \"{{% livechat_label new_poll %}}\" action." +msgstr "" +"Wenn Sie jemanden zum Raumadministrator oder -besitzer befördern, erhält er " +"sofortigen Zugriff auf die Aktion \"{{% livechat_label new_poll %}}\"." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "When you remove admin or owner rights to someone, they can't create new poll. But any existing poll will continue until it ends." -msgstr "Wenn Sie jemandem die Administrator- oder Eigentümerrechte entziehen, kann er keine neue Umfrage mehr erstellen. Bestehende Umfragen werden jedoch fortgesetzt, bis sie beendet werden." +msgid "" +"When you remove admin or owner rights to someone, they can't create new " +"poll. But any existing poll will continue until it ends." +msgstr "" +"Wenn Sie jemandem die Administrator- oder Eigentümerrechte entziehen, kann " +"er keine neue Umfrage mehr erstellen. Bestehende Umfragen werden jedoch " +"fortgesetzt, bis sie beendet werden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "Every user that is not muted can vote. This means that you can prevent anonymous users to vote by using the [\"{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}\" feature](/peertube-plugin-livechat/documentation/user/streamers/moderation)." -msgstr "Jeder Benutzer, der nicht stummgeschaltet ist, kann abstimmen. Das bedeutet, dass Sie anonyme Benutzer an der Abstimmung hindern können, indem Sie die Funktion [\"{{% livechat_label livechat_configuration_channel_mute_anonymous_label %}}\"](/peertube-plugin-livechat/de/documentation/user/streamers/moderation) verwenden." +msgid "" +"Every user that is not muted can vote. This means that you can prevent " +"anonymous users to vote by using the [\"{{% livechat_label " +"livechat_configuration_channel_mute_anonymous_label %}}\" feature](/peertube-" +"plugin-livechat/documentation/user/streamers/moderation)." +msgstr "" +"Jeder Benutzer, der nicht stummgeschaltet ist, kann abstimmen. Das " +"bedeutet, dass Sie anonyme Benutzer an der Abstimmung hindern können, indem " +"Sie die Funktion [\"{{% livechat_label " +"livechat_configuration_channel_mute_anonymous_label %}}\"](/peertube-plugin-" +"livechat/de/documentation/user/streamers/moderation) verwenden." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4131,17 +6635,30 @@ msgstr "Umfrageablauf" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "When the polls starts, a first message will be sent in the chat, from the account of the user creating the poll." -msgstr "Wenn die Umfrage beginnt, wird eine erste Nachricht im Chat vom Konto des Benutzers, der die Umfrage erstellt, gesendet." +msgid "" +"When the polls starts, a first message will be sent in the chat, from the " +"account of the user creating the poll." +msgstr "" +"Wenn die Umfrage beginnt, wird eine erste Nachricht im Chat vom Konto des " +"Benutzers, der die Umfrage erstellt, gesendet." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "A banner will also appear to show the poll, and will be updated regularly with the current votes." -msgstr "Außerdem wird ein Banner erscheinen, das die Umfrage anzeigt und regelmäßig mit den aktuellen Stimmen aktualisiert wird." +msgid "" +"A banner will also appear to show the poll, and will be updated regularly " +"with the current votes." +msgstr "" +"Außerdem wird ein Banner erscheinen, das die Umfrage anzeigt und regelmäßig " +"mit den aktuellen Stimmen aktualisiert wird." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "![Screenshot of a chat session. In the chat, there is a message with the poll question, and the different choices. There is also a banner on the top of the chat, where you can see the question, and the number of votes for each answers.](/peertube-plugin-livechat/images/polls_start.png?classes=shadow,border&height=200px \"Poll start\")" +msgid "" +"![Screenshot of a chat session. In the chat, there is a message with the " +"poll question, and the different choices. There is also a banner on the top " +"of the chat, where you can see the question, and the number of votes for " +"each answers.](/peertube-plugin-livechat/images/polls_start.png?" +"classes=shadow,border&height=200px \"Poll start\")" msgstr "" "![Screenshot einer Chatsitzung. Im Chat gibt es eine Nachricht mit der Frage " "und den verschiedenen Wahlmöglichkeiten. Außerdem gibt es ein Banner am " @@ -4151,8 +6668,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "Viewers can then vote by clicking on their choice, or by sending message like \"!1\" in the chat." -msgstr "Die Zuschauer können dann abstimmen, indem sie auf ihre Wahl klicken oder eine Nachricht wie \"!1\" in den Chat schicken." +msgid "" +"Viewers can then vote by clicking on their choice, or by sending message " +"like \"!1\" in the chat." +msgstr "" +"Die Zuschauer können dann abstimmen, indem sie auf ihre Wahl klicken oder " +"eine Nachricht wie \"!1\" in den Chat schicken." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4161,12 +6682,19 @@ msgstr "Die Anzahl der Stimmen wird regelmäßig im Banner aktualisiert." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "Viewers can change their vote at any time, just by making a new choice. Their precedent choice will be replaced by the new one." -msgstr "Die Zuschauer können ihre Wahl jederzeit ändern, indem sie einfach eine neue Wahl treffen. Die vorherige Wahl wird dann durch die neue ersetzt." +msgid "" +"Viewers can change their vote at any time, just by making a new choice. " +"Their precedent choice will be replaced by the new one." +msgstr "" +"Die Zuschauer können ihre Wahl jederzeit ändern, indem sie einfach eine neue " +"Wahl treffen. Die vorherige Wahl wird dann durch die neue ersetzt." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "![Screenshot of a chat session, with an ongoing poll. The current user has just voted by sending \"!1\".](/peertube-plugin-livechat/images/polls_votes.png?classes=shadow,border&height=200px \"Poll votes\")" +msgid "" +"![Screenshot of a chat session, with an ongoing poll. The current user has " +"just voted by sending \"!1\".](/peertube-plugin-livechat/images/polls_votes." +"png?classes=shadow,border&height=200px \"Poll votes\")" msgstr "" "![Screenshot einer Chatsitzung mit einer laufenden Umfrage. Der aktuelle " "Benutzer hat gerade abgestimmt, indem er \"!1\" gesendet hat.](/peertube-" @@ -4176,38 +6704,68 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md msgid "Anonymous viewers can only vote once they have choosen their nickname." -msgstr "Anonyme Nutzer können nur abstimmen, wenn sie ihren Nicknamen gewählt haben." +msgstr "" +"Anonyme Nutzer können nur abstimmen, wenn sie ihren Nicknamen gewählt haben." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "If \"{{% livechat_label poll_anonymous_results %}}\" is checked, votes won't be shown to other users. If unchecked, votes will be publicly visible as you will see message like \"!1\" in the chat." -msgstr "Wenn \"{{% livechat_label poll_anonymous_results %}}\" aktiviert ist, werden die Stimmen anderen Benutzern nicht angezeigt. Wenn diese Option nicht aktiviert ist, sind die Abstimmungen öffentlich sichtbar, da Ihnen Meldungen wie \"!1\" im Chat angezeigt werden." +msgid "" +"If \"{{% livechat_label poll_anonymous_results %}}\" is checked, votes won't " +"be shown to other users. If unchecked, votes will be publicly visible as " +"you will see message like \"!1\" in the chat." +msgstr "" +"Wenn \"{{% livechat_label poll_anonymous_results %}}\" aktiviert ist, werden " +"die Stimmen anderen Benutzern nicht angezeigt. Wenn diese Option nicht " +"aktiviert ist, sind die Abstimmungen öffentlich sichtbar, da Ihnen Meldungen " +"wie \"!1\" im Chat angezeigt werden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "For viewers using XMPP clients or outdated livechat plugin versions, the banner will not be visible. But they will see the message in the chat and will be able to vote by sending messages with their choices." -msgstr "Für Nutzer, die XMPP-Clients oder veraltete Livechat-Plugin-Versionen verwenden, wird das Banner nicht sichtbar sein. Sie sehen jedoch die Nachricht im Chat und können ihre Stimme abgeben, indem sie Nachrichten mit ihrer Wahl senden." +msgid "" +"For viewers using XMPP clients or outdated livechat plugin versions, the " +"banner will not be visible. But they will see the message in the chat and " +"will be able to vote by sending messages with their choices." +msgstr "" +"Für Nutzer, die XMPP-Clients oder veraltete Livechat-Plugin-Versionen " +"verwenden, wird das Banner nicht sichtbar sein. Sie sehen jedoch die " +"Nachricht im Chat und können ihre Stimme abgeben, indem sie Nachrichten mit " +"ihrer Wahl senden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "When the poll ends, a new message will be sent in the chat, with the results." -msgstr "Wenn die Umfrage beendet ist, wird im Chat eine neue Nachricht mit den Ergebnissen gesendet." +msgid "" +"When the poll ends, a new message will be sent in the chat, with the results." +msgstr "" +"Wenn die Umfrage beendet ist, wird im Chat eine neue Nachricht mit den " +"Ergebnissen gesendet." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "![Screenshot of a chat session, with poll that has ended. The banner no more accept new votes. There is a message in the chat with the poll results. For each choice, there is the number of votes, and the percentage of the total it represents.](/peertube-plugin-livechat/images/polls_end.png?classes=shadow,border&height=200px \"Poll end\")" +msgid "" +"![Screenshot of a chat session, with poll that has ended. The banner no more " +"accept new votes. There is a message in the chat with the poll results. For " +"each choice, there is the number of votes, and the percentage of the total " +"it represents.](/peertube-plugin-livechat/images/polls_end.png?" +"classes=shadow,border&height=200px \"Poll end\")" msgstr "" "![Screenshot einer Chatsitzung, mit einer Umfrage, die beendet wurde. Das " "banner nimmt keine neuen Stimmen mehr an. Im Chat erscheint eine Nachricht " "mit den Ergebnissen der Umfrage. Für jede Wahl gibt es die Anzahl der " -"Stimmen und den prozentualen Anteil an der Gesamtzahl.](/peertube-" -"plugin-livechat/images/polls_end.png?classes=shadow,border&height=200px " +"Stimmen und den prozentualen Anteil an der Gesamtzahl.](/peertube-plugin-" +"livechat/images/polls_end.png?classes=shadow,border&height=200px " "\"Umfrageende\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md -msgid "The only way to get old polls results is to search for the poll end message in the chat. For now, polls results are not saved by any other means. So don't forget to note polls results if you want to keep them." -msgstr "Die einzige Möglichkeit, alte Umfrageergebnisse zu erhalten, ist die Suche nach der Nachricht über das Ende der Umfrage im Chat. Im Moment werden die Umfrageergebnisse nicht auf andere Weise gespeichert. Vergessen Sie also nicht, die Umfrageergebnisse zu notieren, wenn Sie sie behalten wollen." +msgid "" +"The only way to get old polls results is to search for the poll end message " +"in the chat. For now, polls results are not saved by any other means. So " +"don't forget to note polls results if you want to keep them." +msgstr "" +"Die einzige Möglichkeit, alte Umfrageergebnisse zu erhalten, ist die Suche " +"nach der Nachricht über das Ende der Umfrage im Chat. Im Moment werden die " +"Umfrageergebnisse nicht auf andere Weise gespeichert. Vergessen Sie also " +"nicht, die Umfrageergebnisse zu notieren, wenn Sie sie behalten wollen." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/slow_mode.md @@ -4223,13 +6781,12 @@ msgstr "Langsamer Modus" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 8.3.0 verfügbar sein." - -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." -msgstr "Als Streamer haben Sie die Möglichkeit, die Anzahl der Nachrichten Ihrer Zuschauer im Chat zeitlich zu begrenzen." +msgid "" +"As a streamer, you can choose to rate limit your viewers messages in the " +"chat." +msgstr "" +"Als Streamer haben Sie die Möglichkeit, die Anzahl der Nachrichten Ihrer " +"Zuschauer im Chat zeitlich zu begrenzen." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md @@ -4248,8 +6805,12 @@ msgstr "einen unleserlichen Chat vermeiden, wenn viele Zuschauer schreiben" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "You can set a number of seconds that users will have to wait after sending a message, before sending another." -msgstr "Sie können eine Anzahl von Sekunden festlegen, die die Benutzer nach dem Senden einer Nachricht warten müssen, bevor sie eine weitere senden können." +msgid "" +"You can set a number of seconds that users will have to wait after sending a " +"message, before sending another." +msgstr "" +"Sie können eine Anzahl von Sekunden festlegen, die die Benutzer nach dem " +"Senden einer Nachricht warten müssen, bevor sie eine weitere senden können." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md @@ -4264,27 +6825,45 @@ msgstr "Langsamer Modus Option" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "On the [channel configuration page](/peertube-plugin-livechat/documentation/user/streamers/channel), you can set the slow mode option:" -msgstr "Auf der [Kanal Konfigurations Seite](/peertube-plugin-livechat/de/documentation/user/streamers/channel) können Sie den langsamen Modus einstellen:" +msgid "" +"On the [channel configuration page](/peertube-plugin-livechat/documentation/" +"user/streamers/channel), you can set the slow mode option:" +msgstr "" +"Auf der [Kanal Konfigurations Seite](/peertube-plugin-livechat/de/" +"documentation/user/streamers/channel) können Sie den langsamen Modus " +"einstellen:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "![Screenshot of the channel options form, with a slow mode field.](/peertube-plugin-livechat/images/slow_mode_channel_option.png?classes=shadow,border&height=400px \"Channel configuration / Slow Mode\")" +msgid "" +"![Screenshot of the channel options form, with a slow mode field.](/peertube-" +"plugin-livechat/images/slow_mode_channel_option.png?classes=shadow," +"border&height=400px \"Channel configuration / Slow Mode\")" msgstr "" "![Screenshot des Formulars für die Kanaloptionen, mit einem Feld für den " -"langsamen Modus.](/peertube-plugin-livechat/images/" -"slow_mode_channel_option.png?classes=shadow,border&height=400px " -"\"Kanalkonfiguration / Langsamer Modus\")" +"langsamen Modus.](/peertube-plugin-livechat/images/slow_mode_channel_option." +"png?classes=shadow,border&height=400px \"Kanalkonfiguration / Langsamer " +"Modus\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "Setting the value to a positive integer will set the period during which users will not be able to post additional messages." -msgstr "Wenn Sie den Wert auf eine positive ganze Zahl setzen, wird der Zeitraum festgelegt, in dem die Benutzer keine weiteren Nachrichten senden können." +msgid "" +"Setting the value to a positive integer will set the period during which " +"users will not be able to post additional messages." +msgstr "" +"Wenn Sie den Wert auf eine positive ganze Zahl setzen, wird der Zeitraum " +"festgelegt, in dem die Benutzer keine weiteren Nachrichten senden können." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "To modify the value for an already existing room, just open the room \"configuration\" menu (on top of the chat window), and change the slow mode value in the configuration form." -msgstr "Um den Wert für einen bereits existierenden Raum zu ändern, öffnen Sie einfach das Raum-Konfigurationsmenü (oben im Chatfenster) und ändern Sie den Wert für den langsamen Modus im Konfigurationsformular." +msgid "" +"To modify the value for an already existing room, just open the room " +"\"configuration\" menu (on top of the chat window), and change the slow mode " +"value in the configuration form." +msgstr "" +"Um den Wert für einen bereits existierenden Raum zu ändern, öffnen Sie " +"einfach das Raum-Konfigurationsmenü (oben im Chatfenster) und ändern Sie den " +"Wert für den langsamen Modus im Konfigurationsformular." #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/slow_mode.md @@ -4296,22 +6875,32 @@ msgstr "Für Zuschauer" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "If the slow mode is enabled, users will be informed by a message." -msgstr "Wenn der langsame Modus aktiviert ist, wird der Benutzer durch eine Nachricht informiert." +msgstr "" +"Wenn der langsame Modus aktiviert ist, wird der Benutzer durch eine " +"Nachricht informiert." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "![Screenshot of a chat session. There is a banner on the bottom of the chat, indicating that the slow mode is enabled, and that users can send a message every 2 seconds.](/peertube-plugin-livechat/images/slow_mode.png?classes=shadow,border&height=400px \"Slow mode infobox\")" +msgid "" +"![Screenshot of a chat session. There is a banner on the bottom of the chat, " +"indicating that the slow mode is enabled, and that users can send a message " +"every 2 seconds.](/peertube-plugin-livechat/images/slow_mode.png?" +"classes=shadow,border&height=400px \"Slow mode infobox\")" msgstr "" "![Screenshot einer Chatsitzung. Am unteren Rand des Chats befindet sich ein " "Banner, das darauf hinweist, dass der langsame Modus aktiviert ist und die " -"Benutzer alle 2 Sekunden eine Nachricht senden können.](/peertube-" -"plugin-livechat/images/slow_mode.png?classes=shadow,border&height=400px " -"\"Langsamer Modus Infobox\")" +"Benutzer alle 2 Sekunden eine Nachricht senden können.](/peertube-plugin-" +"livechat/images/slow_mode.png?classes=shadow,border&height=400px \"Langsamer " +"Modus Infobox\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "When they send a message, the input field will be disabled for X seconds (where X is the slow mode duration)." -msgstr "Wenn sie eine Nachricht senden, wird das Eingabefeld für X Sekunden deaktiviert (wobei X die Dauer des langsamen Modus ist)." +msgid "" +"When they send a message, the input field will be disabled for X seconds " +"(where X is the slow mode duration)." +msgstr "" +"Wenn sie eine Nachricht senden, wird das Eingabefeld für X Sekunden " +"deaktiviert (wobei X die Dauer des langsamen Modus ist)." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4327,13 +6916,15 @@ msgstr "Aufgaben / To-do-Listen" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 10.0.0 verfügbar sein." - -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." -msgstr "Das Livechat Plugin enthält eine Aufgabenanwendung: eine Art \"To-Do-Liste\", mit der Sie Aufgabenlisten erstellen und Aufgaben zu ihnen hinzufügen können. Die Administratoren eines jeden Raums haben Zugriff auf diese Aufgaben, sodass Sie sie gemeinsam bearbeiten können." +msgid "" +"The livechat plugin includes a Task Application: a kind of \"to-do list\" " +"feature where you can create task lists and add tasks to them. Every room's " +"admins have access to these tasks, so you can edit them collaboratively." +msgstr "" +"Das Livechat Plugin enthält eine Aufgabenanwendung: eine Art \"To-Do-" +"Liste\", mit der Sie Aufgabenlisten erstellen und Aufgaben zu ihnen " +"hinzufügen können. Die Administratoren eines jeden Raums haben Zugriff auf " +"diese Aufgaben, sodass Sie sie gemeinsam bearbeiten können." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4342,13 +6933,21 @@ msgstr "Sie können die Aufgabenanwendung zum Beispiel verwenden, um:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "prepare a list of themes you want to discuss during your livestream, so you can be sure you won't forget anything" -msgstr "eine Liste der Themen vorzubereiten, die Sie während Ihres Livestreams besprechen möchten, damit Sie nichts vergessen" +msgid "" +"prepare a list of themes you want to discuss during your livestream, so you " +"can be sure you won't forget anything" +msgstr "" +"eine Liste der Themen vorzubereiten, die Sie während Ihres Livestreams " +"besprechen möchten, damit Sie nichts vergessen" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "highlight questions from your viewers, so you can come back to them later without forgetting to answer them" -msgstr "Fragen Ihrer Zuschauer markieren, damit Sie später darauf zurückkommen können, ohne zu vergessen, sie zu beantworten" +msgid "" +"highlight questions from your viewers, so you can come back to them later " +"without forgetting to answer them" +msgstr "" +"Fragen Ihrer Zuschauer markieren, damit Sie später darauf zurückkommen " +"können, ohne zu vergessen, sie zu beantworten" #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4364,12 +6963,20 @@ msgstr "Aufgabenanwendung öffnen" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "To open the Task Application, there is a \"{{% livechat_label \"tasks\" %}}\" button in the top chat menu:" -msgstr "Um die Aufgabenanwendung zu öffnen, gibt es eine Schaltfläche \"{{% livechat_label \"Aufgaben\" %}}\" im oberen Chatmenü:" +msgid "" +"To open the Task Application, there is a \"{{% livechat_label \"tasks\" " +"%}}\" button in the top chat menu:" +msgstr "" +"Um die Aufgabenanwendung zu öffnen, gibt es eine Schaltfläche \"{{% " +"livechat_label \"Aufgaben\" %}}\" im oberen Chatmenü:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of a Peertube video, with the chat on the right. The chat top menu is open, with a \"{{% livechat_label tasks %}}\" button.](/peertube-plugin-livechat/images/task_open_app_video.png?classes=shadow,border&height=200px \"Opening the Task Application\")" +msgid "" +"![Screenshot of a Peertube video, with the chat on the right. The chat top " +"menu is open, with a \"{{% livechat_label tasks %}}\" button.](/peertube-" +"plugin-livechat/images/task_open_app_video.png?classes=shadow," +"border&height=200px \"Opening the Task Application\")" msgstr "" "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das " "obere Menü des Chats ist geöffnet, mit einer Schaltfläche \"{{% " @@ -4379,48 +6986,71 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of a Peertube chat, fullscreen. The chat top menu open, with a \"{{% livechat_label tasks %}}\" button.](/peertube-plugin-livechat/images/task_open_app_fullpage.png?classes=shadow,border&height=200px \"Opening the Task Application\")" +msgid "" +"![Screenshot of a Peertube chat, fullscreen. The chat top menu open, with a " +"\"{{% livechat_label tasks %}}\" button.](/peertube-plugin-livechat/images/" +"task_open_app_fullpage.png?classes=shadow,border&height=200px \"Opening the " +"Task Application\")" msgstr "" "![Screenshot eines Peertube-Chats, Vollbild. Das obere Menü des Chats ist " "geöffnet, mit der Schaltfläche \"{{% livechat_label tasks %}}\".](/peertube-" -"plugin-livechat/images/" -"task_open_app_fullpage.png?classes=shadow,border&height=200px \"Öffnen der " -"Aufgabenanwendung\")" +"plugin-livechat/images/task_open_app_fullpage.png?classes=shadow," +"border&height=200px \"Öffnen der Aufgabenanwendung\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "Clicking this button will toggle the Task Application display:" -msgstr "Wenn Sie auf diese Schaltfläche klicken, wird die Anzeige der Aufgabenanwendung umgeschaltet:" +msgstr "" +"Wenn Sie auf diese Schaltfläche klicken, wird die Anzeige der " +"Aufgabenanwendung umgeschaltet:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of a Peertube video, with the chat on the right. The Task application is open. There is a task list, and a form to create a new task.](/peertube-plugin-livechat/images/task_app_video_1.png?classes=shadow,border&height=200px \"Task Application\")" +msgid "" +"![Screenshot of a Peertube video, with the chat on the right. The Task " +"application is open. There is a task list, and a form to create a new task.]" +"(/peertube-plugin-livechat/images/task_app_video_1.png?classes=shadow," +"border&height=200px \"Task Application\")" msgstr "" "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Die " "Aufgabenanwendung ist geöffnet. Es gibt eine Aufgabenliste und ein Formular, " "um eine neue Aufgabe zu erstellen.](/peertube-plugin-livechat/images/" -"task_app_video_1.png?classes=shadow,border&height=200px \"Aufgabenanwendung\"" -")" - -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of a Peertube chat, fullscreen. The Task application is open. There is a task list, and a form to create a new task.](/peertube-plugin-livechat/images/task_app_fullpage_1.png?classes=shadow,border&height=200px \"Task Application\")" -msgstr "" -"![Screenshot eines Peertube-Chats, Vollbild. Die Aufgabenanwendung ist " -"geöffnet. Es gibt eine Aufgabenliste und ein Formular, um eine neue Aufgabe " -"zu erstellen.](/peertube-plugin-livechat/images/" -"task_app_fullpage_1.png?classes=shadow,border&height=200px " +"task_app_video_1.png?classes=shadow,border&height=200px " "\"Aufgabenanwendung\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "Every room's admins have access to the Task Application (read and write access)." -msgstr "Die Administratoren eines jeden Raums haben Zugriff auf die Aufgabenanwendung (Lese- und Schreibzugriff)." +msgid "" +"![Screenshot of a Peertube chat, fullscreen. The Task application is open. " +"There is a task list, and a form to create a new task.](/peertube-plugin-" +"livechat/images/task_app_fullpage_1.png?classes=shadow,border&height=200px " +"\"Task Application\")" +msgstr "" +"![Screenshot eines Peertube-Chats, Vollbild. Die Aufgabenanwendung ist " +"geöffnet. Es gibt eine Aufgabenliste und ein Formular, um eine neue Aufgabe " +"zu erstellen.](/peertube-plugin-livechat/images/task_app_fullpage_1.png?" +"classes=shadow,border&height=200px \"Aufgabenanwendung\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "When you promote someone as room admin or owner, they gets instant access to the Task Application. When you remove admin or owner rights to someone, they instantly lose access to the Task Application." -msgstr "Wenn Sie jemanden zum Raumadministrator oder -besitzer befördern, erhält dieser sofortigen Zugriff auf die Aufgabenanwendung. Wenn Sie jemandem die Admin- oder Eigentümerrechte entziehen, verliert er sofort den Zugang zur Aufgabenanwendung." +msgid "" +"Every room's admins have access to the Task Application (read and write " +"access)." +msgstr "" +"Die Administratoren eines jeden Raums haben Zugriff auf die " +"Aufgabenanwendung (Lese- und Schreibzugriff)." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/tasks.md +msgid "" +"When you promote someone as room admin or owner, they gets instant access to " +"the Task Application. When you remove admin or owner rights to someone, " +"they instantly lose access to the Task Application." +msgstr "" +"Wenn Sie jemanden zum Raumadministrator oder -besitzer befördern, erhält " +"dieser sofortigen Zugriff auf die Aufgabenanwendung. Wenn Sie jemandem die " +"Admin- oder Eigentümerrechte entziehen, verliert er sofort den Zugang zur " +"Aufgabenanwendung." #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4430,13 +7060,23 @@ msgstr "Aufgabenlisten" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "By default, there is one task list that has the same name as your livestream." -msgstr "Standardmäßig gibt es eine Aufgabenliste, die denselben Namen wie Ihr Livestream hat." +msgid "" +"By default, there is one task list that has the same name as your livestream." +msgstr "" +"Standardmäßig gibt es eine Aufgabenliste, die denselben Namen wie Ihr " +"Livestream hat." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "You can use the form at the bottom to create a new task list. You can also edit existing task lists using the edit button, or delete any task list. Deleting a task list will also delete all its tasks." -msgstr "Mit dem Formular am unteren Rand können Sie eine neue Aufgabenliste erstellen. Sie können auch bestehende Aufgabenlisten über die Schaltfläche bearbeiten oder eine Aufgabenliste löschen. Wenn Sie eine Aufgabenliste löschen, werden auch alle dazugehörigen Aufgaben gelöscht." +msgid "" +"You can use the form at the bottom to create a new task list. You can also " +"edit existing task lists using the edit button, or delete any task list. " +"Deleting a task list will also delete all its tasks." +msgstr "" +"Mit dem Formular am unteren Rand können Sie eine neue Aufgabenliste " +"erstellen. Sie können auch bestehende Aufgabenlisten über die Schaltfläche " +"bearbeiten oder eine Aufgabenliste löschen. Wenn Sie eine Aufgabenliste " +"löschen, werden auch alle dazugehörigen Aufgaben gelöscht." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4445,12 +7085,14 @@ msgstr "Die Aufgabenlisten sind alphabetisch sortiert." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of a chat session, with the Task application. There are several task lists.](/peertube-plugin-livechat/images/task_app_task_lists.png?classes=shadow,border&height=200px \"Task lists\")" +msgid "" +"![Screenshot of a chat session, with the Task application. There are several " +"task lists.](/peertube-plugin-livechat/images/task_app_task_lists.png?" +"classes=shadow,border&height=200px \"Task lists\")" msgstr "" "![Screenshot einer Chatsitzung mit der Aufgabenanwendung. Es gibt mehrere " -"Aufgabenlisten.](/peertube-plugin-livechat/images/" -"task_app_task_lists.png?classes=shadow,border&height=200px \"Aufgabenlisten\"" -")" +"Aufgabenlisten.](/peertube-plugin-livechat/images/task_app_task_lists.png?" +"classes=shadow,border&height=200px \"Aufgabenlisten\")" #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4466,22 +7108,33 @@ msgstr "Aufgaben erstellen" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "You can create a task using the button on the right of task lists. This opens a form with two fields: a mandatory task name, and an optional description." -msgstr "Sie können eine Aufgabe über die Schaltfläche rechts neben der Aufgabenliste erstellen. Es öffnet sich ein Formular mit zwei Feldern: einem obligatorischen Aufgabennamen und einer optionalen Beschreibung." +msgid "" +"You can create a task using the button on the right of task lists. This " +"opens a form with two fields: a mandatory task name, and an optional " +"description." +msgstr "" +"Sie können eine Aufgabe über die Schaltfläche rechts neben der Aufgabenliste " +"erstellen. Es öffnet sich ein Formular mit zwei Feldern: einem " +"obligatorischen Aufgabennamen und einer optionalen Beschreibung." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of the task application. Under the first task list, there is a form to create a new task.](/peertube-plugin-livechat/images/task_app_task_form.png?classes=shadow,border&height=200px \"Task form\")" +msgid "" +"![Screenshot of the task application. Under the first task list, there is a " +"form to create a new task.](/peertube-plugin-livechat/images/" +"task_app_task_form.png?classes=shadow,border&height=200px \"Task form\")" msgstr "" "![Screenshot der Aufgabenanwendung. Unter der ersten Aufgabenliste befindet " -"sich ein Formular zum Erstellen einer neuen Aufgabe.](/peertube-" -"plugin-livechat/images/" -"task_app_task_form.png?classes=shadow,border&height=200px \"Aufgabenformular" -"\")" +"sich ein Formular zum Erstellen einer neuen Aufgabe.](/peertube-plugin-" +"livechat/images/task_app_task_form.png?classes=shadow,border&height=200px " +"\"Aufgabenformular\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of the task application. Under the first task list, a new task was created.](/peertube-plugin-livechat/images/task_app_task_1.png?classes=shadow,border&height=200px \"Task created\")" +msgid "" +"![Screenshot of the task application. Under the first task list, a new task " +"was created.](/peertube-plugin-livechat/images/task_app_task_1.png?" +"classes=shadow,border&height=200px \"Task created\")" msgstr "" "![Screenshot der Aufgabenanwendung. Unter der ersten Aufgabenliste wurde " "eine neue Aufgabe erstellt.](/peertube-plugin-livechat/images/" @@ -4496,21 +7149,30 @@ msgstr "Aufgaben bearbeiten" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "Tasks can be edited by using the edit button on the right." -msgstr "Aufgaben können über die Schaltfläche \"Bearbeiten\" auf der rechten Seite bearbeitet werden." +msgstr "" +"Aufgaben können über die Schaltfläche \"Bearbeiten\" auf der rechten Seite " +"bearbeitet werden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "Tasks can be marked complete (or uncomplete) by clicking directly on the checkbox in the list." -msgstr "Aufgaben können durch direktes Anklicken des Kontrollkästchens in der Liste als erledigt (oder nicht erledigt) markiert werden." +msgid "" +"Tasks can be marked complete (or uncomplete) by clicking directly on the " +"checkbox in the list." +msgstr "" +"Aufgaben können durch direktes Anklicken des Kontrollkästchens in der Liste " +"als erledigt (oder nicht erledigt) markiert werden." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of the task application. Under task lists, there are several tasks. Some of them are checked, other not.](/peertube-plugin-livechat/images/task_app_task_2.png?classes=shadow,border&height=200px \"Tasks\")" +msgid "" +"![Screenshot of the task application. Under task lists, there are several " +"tasks. Some of them are checked, other not.](/peertube-plugin-livechat/" +"images/task_app_task_2.png?classes=shadow,border&height=200px \"Tasks\")" msgstr "" "![Screenshot der Aufgabenanwendung. Unter den Aufgabenlisten gibt es mehrere " -"Aufgaben. Einige von ihnen sind markiert, andere nicht.](/peertube-" -"plugin-livechat/images/" -"task_app_task_2.png?classes=shadow,border&height=200px \"Aufgaben\")" +"Aufgaben. Einige von ihnen sind markiert, andere nicht.](/peertube-plugin-" +"livechat/images/task_app_task_2.png?classes=shadow,border&height=200px " +"\"Aufgaben\")" #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4520,21 +7182,31 @@ msgstr "Aufgaben sortieren / Aufgabenliste ändern" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "You can sort tasks, or move tasks from one list to another, simply using drag & drop." -msgstr "Sie können Aufgaben sortieren oder von einer Liste in eine andere verschieben, indem Sie sie einfach per Drag & Drop ziehen." +msgid "" +"You can sort tasks, or move tasks from one list to another, simply using " +"drag & drop." +msgstr "" +"Sie können Aufgaben sortieren oder von einer Liste in eine andere " +"verschieben, indem Sie sie einfach per Drag & Drop ziehen." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of the task application. There is a task that is dragged over another.](/peertube-plugin-livechat/images/task_drag_drop.png?classes=shadow,border&height=200px \"Drag and drop to sort\")" +msgid "" +"![Screenshot of the task application. There is a task that is dragged over " +"another.](/peertube-plugin-livechat/images/task_drag_drop.png?classes=shadow," +"border&height=200px \"Drag and drop to sort\")" msgstr "" "![Screenshot der Aufgabenanwendung. Eine Aufgabe wird über eine andere " -"gezogen](/peertube-plugin-livechat/images/" -"task_drag_drop.png?classes=shadow,border&height=200px \"Drag und drop zum " -"sortieren\")" +"gezogen](/peertube-plugin-livechat/images/task_drag_drop.png?classes=shadow," +"border&height=200px \"Drag und drop zum sortieren\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of the task application. There is a task that is dragged over another task list.](/peertube-plugin-livechat/images/task_drag_drop_task_list.png?classes=shadow,border&height=200px \"Drag and drop to move to another list\")" +msgid "" +"![Screenshot of the task application. There is a task that is dragged over " +"another task list.](/peertube-plugin-livechat/images/" +"task_drag_drop_task_list.png?classes=shadow,border&height=200px \"Drag and " +"drop to move to another list\")" msgstr "" "![Screenshot der Aufgabenanwendung. Es gibt eine Aufgabe, die über eine " "andere Aufgabenliste gezogen wird.](/peertube-plugin-livechat/images/" @@ -4549,32 +7221,52 @@ msgstr "Erstellen einer Aufgabe aus einer Chat-Nachricht" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "You can create a task from a message in a chat, using the \"{{% livechat_label \"task_create\" %}}\" button in the dropdown menu at the right of the message. This will open a dialog box where you can choose which task list you want to add the task into. The task name will be the user nickname, and the task description the message content." -msgstr "Sie können eine Aufgabe aus einer Nachricht in einem Chat erstellen, indem Sie die Schaltfläche \"{{% livechat_label \"task_create\" %}}\" im Dropdown-Menü rechts neben der Nachricht verwenden. Daraufhin öffnet sich ein Dialogfeld, in dem Sie auswählen können, in welche Aufgabenliste Sie die Aufgabe aufnehmen möchten. Der Aufgabenname ist der Spitzname des Benutzers und die Aufgabenbeschreibung der Inhalt der Nachricht." +msgid "" +"You can create a task from a message in a chat, using the \"{{% " +"livechat_label \"task_create\" %}}\" button in the dropdown menu at the " +"right of the message. This will open a dialog box where you can choose " +"which task list you want to add the task into. The task name will be the " +"user nickname, and the task description the message content." +msgstr "" +"Sie können eine Aufgabe aus einer Nachricht in einem Chat erstellen, indem " +"Sie die Schaltfläche \"{{% livechat_label \"task_create\" %}}\" im Dropdown-" +"Menü rechts neben der Nachricht verwenden. Daraufhin öffnet sich ein " +"Dialogfeld, in dem Sie auswählen können, in welche Aufgabenliste Sie die " +"Aufgabe aufnehmen möchten. Der Aufgabenname ist der Spitzname des Benutzers " +"und die Aufgabenbeschreibung der Inhalt der Nachricht." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of a chat session. The menu besides a message is open, with a button to create a new task.](/peertube-plugin-livechat/images/task_from_message_1.png?classes=shadow,border&height=200px \"Create task from message\")" +msgid "" +"![Screenshot of a chat session. The menu besides a message is open, with a " +"button to create a new task.](/peertube-plugin-livechat/images/" +"task_from_message_1.png?classes=shadow,border&height=200px \"Create task " +"from message\")" msgstr "" "![Screenshot einer Chatsitzung. Das Menü neben einer Nachricht ist geöffnet, " -"mit einer Schaltfläche zum Erstellen einer neuen Aufgabe.](/peertube-" -"plugin-livechat/images/" -"task_from_message_1.png?classes=shadow,border&height=200px \"Aufgabe aus " -"einer Nachricht erstellen\")" +"mit einer Schaltfläche zum Erstellen einer neuen Aufgabe.](/peertube-plugin-" +"livechat/images/task_from_message_1.png?classes=shadow,border&height=200px " +"\"Aufgabe aus einer Nachricht erstellen\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of a dialog, where you can choose in which task list you want to add the new task.](/peertube-plugin-livechat/images/task_from_message_2.png?classes=shadow,border&height=200px \"Choose the task list\")" +msgid "" +"![Screenshot of a dialog, where you can choose in which task list you want " +"to add the new task.](/peertube-plugin-livechat/images/task_from_message_2." +"png?classes=shadow,border&height=200px \"Choose the task list\")" msgstr "" "![Screenshot eines Dialogs, in dem Sie auswählen können, in welcher " -"Aufgabenliste Sie die neue Aufgabe hinzufügen möchten.](/peertube-" -"plugin-livechat/images/" -"task_from_message_2.png?classes=shadow,border&height=200px \"Aufgabenliste " -"auswählen\")" +"Aufgabenliste Sie die neue Aufgabe hinzufügen möchten.](/peertube-plugin-" +"livechat/images/task_from_message_2.png?classes=shadow,border&height=200px " +"\"Aufgabenliste auswählen\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "![Screenshot of the task application. A new task was added in the \"chat questions\" task list, with the user's nickname, and the message as content.](/peertube-plugin-livechat/images/task_from_message_3.png?classes=shadow,border&height=200px \"Task created\")" +msgid "" +"![Screenshot of the task application. A new task was added in the \"chat " +"questions\" task list, with the user's nickname, and the message as content.]" +"(/peertube-plugin-livechat/images/task_from_message_3.png?classes=shadow," +"border&height=200px \"Task created\")" msgstr "" "![Screenshot der Aufgabenanwendung. Eine neue Aufgabe wurde in der " "Aufgabenliste \"Chat-Fragen\" hinzugefügt, mit dem Spitznamen des Benutzers " @@ -4584,8 +7276,14 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "Using this feature, for example, you can ask your moderators to highlight all chat questions, so you can see them at a glance during your livestream, and check them as answered." -msgstr "Mit dieser Funktion können Sie z. B. Ihre Moderatoren bitten, alle Chat-Fragen zu markieren, damit Sie sie während Ihres Livestreams auf einen Blick sehen und als beantwortet markieren können." +msgid "" +"Using this feature, for example, you can ask your moderators to highlight " +"all chat questions, so you can see them at a glance during your livestream, " +"and check them as answered." +msgstr "" +"Mit dieser Funktion können Sie z. B. Ihre Moderatoren bitten, alle Chat-" +"Fragen zu markieren, damit Sie sie während Ihres Livestreams auf einen Blick " +"sehen und als beantwortet markieren können." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -4599,25 +7297,31 @@ msgstr "Konfigurieren Sie die Chat-Nutzungsbedingungen für den Kanal" msgid "Terms & conditions" msgstr "Nutzungsbedingungen" -#. type: Title ## +#. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "Konfiguration" +msgid "" +"You can add terms & conditions to your channel. These terms will be shown " +"to all users joining the chat." +msgstr "" +"Sie können Ihrem Kanal Nutzungsbedingungen hinzufügen. Diese " +"Nutzungsbedingungen werden allen Benutzern angezeigt, die den Chat betreten." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." -msgstr "Sie können Ihrem Kanal Nutzungsbedingungen hinzufügen. Diese Nutzungsbedingungen werden allen Benutzern angezeigt, die den Chat betreten." +msgid "" +"To configure the terms & conditions, go to the [channel configuration page](/" +"peertube-plugin-livechat/documentation/user/streamers/channel):" +msgstr "" +"Um die Nutzungsbedingungen zu konfigurieren, gehen Sie auf die [Kanal-" +"Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/" +"streamers/channel):" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "To configure the terms & conditions, go to the [channel configuration page](/peertube-plugin-livechat/documentation/user/streamers/channel):" -msgstr "Um die Nutzungsbedingungen zu konfigurieren, gehen Sie auf die [Kanal-Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/streamers/channel):" - -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "![Screenshot of the channel options form, with a field to configure your terms and conditions.](/peertube-plugin-livechat/images/channel_terms_config.png?classes=shadow,border&height=400px \"Channel configuration / Terms\")" +msgid "" +"![Screenshot of the channel options form, with a field to configure your " +"terms and conditions.](/peertube-plugin-livechat/images/channel_terms_config." +"png?classes=shadow,border&height=400px \"Channel configuration / Terms\")" msgstr "" "![Screenshot des Formulars für die Kanaloptionen mit einem Feld für die " "Konfiguration der Nutzungsbedingungen.](/peertube-plugin-livechat/images/" @@ -4626,8 +7330,13 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "URL in the message will be clickable. You can also do some styling: [Message Styling](https://xmpp.org/extensions/xep-0393.html)." -msgstr "Die URL in der Nachricht wird anklickbar sein. Sie können die Nachricht auch etwas gestalten: [Message Styling](https://xmpp.org/extensions/xep-0393.html)." +msgid "" +"URL in the message will be clickable. You can also do some styling: " +"[Message Styling](https://xmpp.org/extensions/xep-0393.html)." +msgstr "" +"Die URL in der Nachricht wird anklickbar sein. Sie können die Nachricht " +"auch etwas gestalten: [Message Styling](https://xmpp.org/extensions/xep-0393." +"html)." #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -4642,7 +7351,10 @@ msgstr "Wenn Sie dem Chat beitreten, sehen die Zuschauer die Bedingungen:" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "![Screenshot of a chat session. On the top of the chat, there are terms and conditions for both the server and the channel.](/peertube-plugin-livechat/images/terms.png?classes=shadow,border&height=400px \"Terms\")" +msgid "" +"![Screenshot of a chat session. On the top of the chat, there are terms and " +"conditions for both the server and the channel.](/peertube-plugin-livechat/" +"images/terms.png?classes=shadow,border&height=400px \"Terms\")" msgstr "" "![Screenshot einer Chatsitzung. Am oberen Rand des Chats stehen die " "Bedingungen für den Server und den Kanal.](/peertube-plugin-livechat/images/" @@ -4650,28 +7362,57 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "Peertube instance's admin can also set global terms & conditions. If so, these terms will be shown above your channel's terms." -msgstr "Der Administrator der Peertube-Instanz kann auch globale Nutzungsbedingungen festlegen. Wenn dies der Fall ist, werden diese Bedingungen über den Bedingungen Ihres Kanals angezeigt." +msgid "" +"Peertube instance's admin can also set global terms & conditions. If so, " +"these terms will be shown above your channel's terms." +msgstr "" +"Der Administrator der Peertube-Instanz kann auch globale Nutzungsbedingungen " +"festlegen. Wenn dies der Fall ist, werden diese Bedingungen über den " +"Bedingungen Ihres Kanals angezeigt." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "Anonymous users will only see the terms & conditions once they have chosen their nickname (in other words: once they are able to talk)." -msgstr "Anonyme Nutzer sehen die Nutzungsbedingungen erst, wenn sie ihren Nickname gewählt haben (mit anderen Worten: wenn sie schreiben können)." +msgid "" +"Anonymous users will only see the terms & conditions once they have chosen " +"their nickname (in other words: once they are able to talk)." +msgstr "" +"Anonyme Nutzer sehen die Nutzungsbedingungen erst, wenn sie ihren Nickname " +"gewählt haben (mit anderen Worten: wenn sie schreiben können)." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "You can change the terms content at any time, it will be instantly updated for all viewers." -msgstr "Sie können den Inhalt der Nutzungsbedingungen jederzeit ändern, er wird dann sofort für alle Betrachter aktualisiert." +msgid "" +"You can change the terms content at any time, it will be instantly updated " +"for all viewers." +msgstr "" +"Sie können den Inhalt der Nutzungsbedingungen jederzeit ändern, er wird dann " +"sofort für alle Betrachter aktualisiert." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "Users can hide the terms & conditions. When doing so, terms won't be shown again, unless you change the content." -msgstr "Benutzer können die Nutzungsbedingungen ausblenden. Wenn Sie dies tun, werden die Bedingungen nicht mehr angezeigt, es sei denn, Sie ändern den Inhalt." +msgid "" +"Users can hide the terms & conditions. When doing so, terms won't be shown " +"again, unless you change the content." +msgstr "" +"Benutzer können die Nutzungsbedingungen ausblenden. Wenn Sie dies tun, " +"werden die Bedingungen nicht mehr angezeigt, es sei denn, Sie ändern den " +"Inhalt." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "If your Peertube instance allows joining chat with [XMPP clients](https://livingston.frama.io/peertube-plugin-livechat/documentation/admin/advanced/xmpp_clients/), users using such clients will see the terms as chat messages, coming from a \"Peertube\" account. When you update terms, they will receive a new message with the update terms content." -msgstr "Wenn Ihre Peertube-Instanz die Teilnahme am Chat mit [XMPP-Clients] (https://livingston.frama.io/peertube-plugin-livechat/de/documentation/admin/advanced/xmpp_clients/) erlaubt, sehen die Benutzer, die solche Clients verwenden, die Bedingungen als Chat-Nachrichten, die von einem \"Peertube\"-Konto kommen. Wenn Sie die Bedingungen aktualisieren, erhalten sie eine neue Nachricht mit dem Inhalt der aktualisierten Bedingungen." +msgid "" +"If your Peertube instance allows joining chat with [XMPP clients](https://" +"livingston.frama.io/peertube-plugin-livechat/documentation/admin/advanced/" +"xmpp_clients/), users using such clients will see the terms as chat " +"messages, coming from a \"Peertube\" account. When you update terms, they " +"will receive a new message with the update terms content." +msgstr "" +"Wenn Ihre Peertube-Instanz die Teilnahme am Chat mit [XMPP-Clients] (https://" +"livingston.frama.io/peertube-plugin-livechat/de/documentation/admin/advanced/" +"xmpp_clients/) erlaubt, sehen die Benutzer, die solche Clients verwenden, " +"die Bedingungen als Chat-Nachrichten, die von einem \"Peertube\"-Konto " +"kommen. Wenn Sie die Bedingungen aktualisieren, erhalten sie eine neue " +"Nachricht mit dem Inhalt der aktualisierten Bedingungen." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/viewers.md @@ -4687,23 +7428,35 @@ msgstr "Chaträumen beitreten" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "When you are watching a Peertube video that has the chat activated, you will see the chat next to the video:" -msgstr "Wenn Sie ein Peertube-Video ansehen, bei dem der Chat aktiviert ist, sehen Sie den Chat neben dem Video:" +msgid "" +"When you are watching a Peertube video that has the chat activated, you will " +"see the chat next to the video:" +msgstr "" +"Wenn Sie ein Peertube-Video ansehen, bei dem der Chat aktiviert ist, sehen " +"Sie den Chat neben dem Video:" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md #: support/documentation/content/en/_index.md #: support/documentation/content/en/intro/_index.md -msgid "![Screenshot of a Peertube video page, with a web chat on the right of the video.](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px \"Chat screenshot\")" +msgid "" +"![Screenshot of a Peertube video page, with a web chat on the right of the " +"video.](/peertube-plugin-livechat/images/chat.png?classes=shadow," +"border&height=200px \"Chat screenshot\")" msgstr "" "![Screenshot einer Peertube-Videoseite mit einem Web-Chat rechts neben dem " -"Video.](/peertube-plugin-livechat/images/" -"chat.png?classes=shadow,border&height=200px \"Chat Bildschirmfoto\")" +"Video.](/peertube-plugin-livechat/images/chat.png?classes=shadow," +"border&height=200px \"Chat Bildschirmfoto\")" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "There are two slightly different use cases, depending on wether or not you have an account on the Peertube instance. See bellow for more informations." -msgstr "Es gibt zwei leicht unterschiedliche Anwendungsfälle, je nachdem, ob Sie ein Konto auf der Peertube-Instanz haben oder nicht. Siehe unten für weitere Informationen." +msgid "" +"There are two slightly different use cases, depending on wether or not you " +"have an account on the Peertube instance. See bellow for more informations." +msgstr "" +"Es gibt zwei leicht unterschiedliche Anwendungsfälle, je nachdem, ob Sie ein " +"Konto auf der Peertube-Instanz haben oder nicht. Siehe unten für weitere " +"Informationen." #. type: Title ### #: support/documentation/content/en/documentation/user/viewers.md @@ -4713,32 +7466,49 @@ msgstr "Wenn Sie kein Peertube-Konto haben" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "If you are not logged in on the Peertube instance where you are watching the video, you will automatically join the chat. You will be assigned a random nickname (something like \"Anonymous 12345\")." -msgstr "Wenn Sie auf der Peertube-Instanz, auf der Sie das Video ansehen, nicht eingeloggt sind, treten Sie automatisch dem Chat bei. Ihnen wird ein zufälliger Spitzname zugewiesen (z. B. \"Anonymous 12345\")." +msgid "" +"If you are not logged in on the Peertube instance where you are watching the " +"video, you will automatically join the chat. You will be assigned a random " +"nickname (something like \"Anonymous 12345\")." +msgstr "" +"Wenn Sie auf der Peertube-Instanz, auf der Sie das Video ansehen, nicht " +"eingeloggt sind, treten Sie automatisch dem Chat bei. Ihnen wird ein " +"zufälliger Spitzname zugewiesen (z. B. \"Anonymous 12345\")." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "![Screenshot of a chat. In the participant list, there is John Livingston, and an anonymous account using \"Anonymous 212873\" nickname.](/peertube-plugin-livechat/images/chat_with_anonymous.png?classes=shadow,border&height=200px \"Chat with an anonymous user\")" +msgid "" +"![Screenshot of a chat. In the participant list, there is John Livingston, " +"and an anonymous account using \"Anonymous 212873\" nickname.](/peertube-" +"plugin-livechat/images/chat_with_anonymous.png?classes=shadow," +"border&height=200px \"Chat with an anonymous user\")" msgstr "" "![Screenshot eines Chats. In der Teilnehmerliste gibt es John Livingston und " "einen anonymen Account mit dem Nicknamen \"Anonymous 212873\".](/peertube-" -"plugin-livechat/images/" -"chat_with_anonymous.png?classes=shadow,border&height=200px \"Chat mit einem " -"anonymen Benutzer\")" +"plugin-livechat/images/chat_with_anonymous.png?classes=shadow," +"border&height=200px \"Chat mit einem anonymen Benutzer\")" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "Before being able to speak in the chat room, you have to enter a nickname in the field on the bottom of the window." -msgstr "Bevor Sie im Chatraum sprechen können, müssen Sie einen Spitznamen in das Feld am unteren Rand des Fensters eingeben." +msgid "" +"Before being able to speak in the chat room, you have to enter a nickname in " +"the field on the bottom of the window." +msgstr "" +"Bevor Sie im Chatraum sprechen können, müssen Sie einen Spitznamen in das " +"Feld am unteren Rand des Fensters eingeben." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "![Screenshot of the chat. The current user is not logged in, and must choose a nickname before being able to write in the chat.](/peertube-plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px \"Joining chat when not connected\")" +msgid "" +"![Screenshot of the chat. The current user is not logged in, and must choose " +"a nickname before being able to write in the chat.](/peertube-plugin-" +"livechat/images/chat_anonymous.png?classes=shadow,border&height=200px " +"\"Joining chat when not connected\")" msgstr "" "![Screenshot des Chats. Der aktuelle Benutzer ist nicht eingeloggt und muss " -"einen Spitznamen wählen, bevor er im Chat schreiben kann.](/peertube-" -"plugin-livechat/images/chat_anonymous.png?classes=shadow,border&height=200px " -"\"Chat beitreten, wenn nicht verbunden\")" +"einen Spitznamen wählen, bevor er im Chat schreiben kann.](/peertube-plugin-" +"livechat/images/chat_anonymous.png?classes=shadow,border&height=200px \"Chat " +"beitreten, wenn nicht verbunden\")" #. type: Title #### #: support/documentation/content/en/documentation/user/viewers.md @@ -4748,13 +7518,31 @@ msgstr "Anmeldung über einen externen Authentifizierungsanbieter" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "The Peertube instance can configure external authentication providers (Mastodon accounts, Google accounts, ...). In such case, you will see a \"{{% livechat_label login_using_external_account %}}\" button, that will open a dialog modal. In this dialog modal, there will be some buttons to connect using a remote account." -msgstr "Die Peertube-Instanz kann externe Authentifizierungsanbieter konfigurieren (Mastodon-Konten, Google-Konten, ...). In diesem Fall sehen Sie eine \"{{% livechat_label login_using_external_account %}}\" Schaltfläche, die ein Dialogfenster öffnet. In diesem Dialogfenster gibt es einige Schaltflächen, um eine Verbindung mit einem externen Konto herzustellen." +msgid "" +"The Peertube instance can configure external authentication providers " +"(Mastodon accounts, Google accounts, ...). In such case, you will see a " +"\"{{% livechat_label login_using_external_account %}}\" button, that will " +"open a dialog modal. In this dialog modal, there will be some buttons to " +"connect using a remote account." +msgstr "" +"Die Peertube-Instanz kann externe Authentifizierungsanbieter konfigurieren " +"(Mastodon-Konten, Google-Konten, ...). In diesem Fall sehen Sie eine \"{{% " +"livechat_label login_using_external_account %}}\" Schaltfläche, die ein " +"Dialogfenster öffnet. In diesem Dialogfenster gibt es einige Schaltflächen, " +"um eine Verbindung mit einem externen Konto herzustellen." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "Once you signed in the remote account, and have granted access, your nickname and avatar (if available) will be automatically fetched. No other data will be stored. These data will be automatically deleted several hours after your quit the chat." -msgstr "Sobald Sie sich bei dem entfernten Konto angemeldet und der Zugang gewährt wurde, werden Ihr Nickname und Ihr Avatar (falls vorhanden) automatisch abgerufen. Es werden keine weiteren Daten gespeichert. Diese Daten werden einige Stunden nach Beendigung des Chats automatisch gelöscht." +msgid "" +"Once you signed in the remote account, and have granted access, your " +"nickname and avatar (if available) will be automatically fetched. No other " +"data will be stored. These data will be automatically deleted several hours " +"after your quit the chat." +msgstr "" +"Sobald Sie sich bei dem entfernten Konto angemeldet und der Zugang gewährt " +"wurde, werden Ihr Nickname und Ihr Avatar (falls vorhanden) automatisch " +"abgerufen. Es werden keine weiteren Daten gespeichert. Diese Daten werden " +"einige Stunden nach Beendigung des Chats automatisch gelöscht." #. type: Title ### #: support/documentation/content/en/documentation/user/viewers.md @@ -4764,13 +7552,28 @@ msgstr "Wenn Sie ein Peertube-Konto haben" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "If you are connected with your Peertube account, you will automatically join the room, using your Peertube nickname and avatar." -msgstr "Wenn Sie mit Ihrem Peertube-Konto verbunden sind, treten Sie dem Raum automatisch bei, indem Sie Ihren Peertube Spitznamen und Avatar verwenden." +msgid "" +"If you are connected with your Peertube account, you will automatically join " +"the room, using your Peertube nickname and avatar." +msgstr "" +"Wenn Sie mit Ihrem Peertube-Konto verbunden sind, treten Sie dem Raum " +"automatisch bei, indem Sie Ihren Peertube Spitznamen und Avatar verwenden." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "If you are watching a live on an instance on which you have no account, but you have an account on another instance: if the livechat plugin is installed on both instances, it is possible to join the chat using your account. To do so, just open the video on your instance (you can for example copy/paste the video url in the search field of your instance)." -msgstr "Wenn Sie ein Live-Video auf einer Instanz ansehen, auf der Sie kein Konto haben, aber ein Konto auf einer anderen Instanz: Wenn das Livechat-Plugin auf beiden Instanzen installiert ist, ist es möglich, dem Chat mit Ihrem Konto beizutreten. Öffnen Sie dazu einfach das Video auf Ihrer Instanz (Sie können zum Beispiel die Video-URL in das Suchfeld Ihrer Instanz kopieren/einfügen)." +msgid "" +"If you are watching a live on an instance on which you have no account, but " +"you have an account on another instance: if the livechat plugin is installed " +"on both instances, it is possible to join the chat using your account. To " +"do so, just open the video on your instance (you can for example copy/paste " +"the video url in the search field of your instance)." +msgstr "" +"Wenn Sie ein Live-Video auf einer Instanz ansehen, auf der Sie kein Konto " +"haben, aber ein Konto auf einer anderen Instanz: Wenn das Livechat-Plugin " +"auf beiden Instanzen installiert ist, ist es möglich, dem Chat mit Ihrem " +"Konto beizutreten. Öffnen Sie dazu einfach das Video auf Ihrer Instanz (Sie " +"können zum Beispiel die Video-URL in das Suchfeld Ihrer Instanz kopieren/" +"einfügen)." #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4780,23 +7583,34 @@ msgstr "Wenn Sie ein Peertube Konto auf einer anderen Peertube Instanz haben" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "Diese Funktion wird mit dem Livechatplugin Version 9.0.0 verfügbar sein." +msgid "" +"If you have a Peertube account, but not on the current instance, there is a " +"\"{{% livechat_label login_using_external_account %}}\" button. This button " +"will open a dialog where you can enter your Peertube instance URL. Once you " +"entered it, it will check if the livechat plugin is available on the remote " +"instance, and if the video is available. If it is the case, you will be " +"redirected to the video on the remote instance." +msgstr "" +"Wenn Sie ein Peertube Konto haben, aber nicht auf der aktuellen Instanz, " +"gibt es einen \"{{% livechat_label login_using_external_account %}}\"-" +"Button. Diese Schaltfläche öffnet einen Dialog, in dem Sie die URL Ihrer " +"Peertube Instanz eingeben können. Sobald Sie diese eingegeben haben, wird " +"geprüft, ob das Livechatplugin auf der entfernten Instanz verfügbar ist und " +"ob das Video verfügbar ist. Wenn dies der Fall ist, werden Sie zu dem Video " +"auf der entfernten Instanz weitergeleitet." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." -msgstr "Wenn Sie ein Peertube Konto haben, aber nicht auf der aktuellen Instanz, gibt es einen \"{{% livechat_label login_using_external_account %}}\"-Button. Diese Schaltfläche öffnet einen Dialog, in dem Sie die URL Ihrer Peertube Instanz eingeben können. Sobald Sie diese eingegeben haben, wird geprüft, ob das Livechatplugin auf der entfernten Instanz verfügbar ist und ob das Video verfügbar ist. Wenn dies der Fall ist, werden Sie zu dem Video auf der entfernten Instanz weitergeleitet." - -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "![Screenshot of the \"{{% livechat_label login_using_external_account %}}\" dialog. There is a field where you can enter a Peertube url.](/peertube-plugin-livechat/images/external_login_dialog.png?classes=shadow,border&height=200px \"External login dialog\")" +msgid "" +"![Screenshot of the \"{{% livechat_label login_using_external_account %}}\" " +"dialog. There is a field where you can enter a Peertube url.](/peertube-" +"plugin-livechat/images/external_login_dialog.png?classes=shadow," +"border&height=200px \"External login dialog\")" msgstr "" "![Screenshot des Dialogs \"{{% livechat_label login_using_external_account " -"%}}\". Es gibt ein Feld, in das Sie eine Peertube-URL eingeben können" -".](/peertube-plugin-livechat/images/" -"external_login_dialog.png?classes=shadow,border&height=200px \"Externer " -"Anmeldedialog\")" +"%}}\". Es gibt ein Feld, in das Sie eine Peertube-URL eingeben können.](/" +"peertube-plugin-livechat/images/external_login_dialog.png?classes=shadow," +"border&height=200px \"Externer Anmeldedialog\")" #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4806,23 +7620,48 @@ msgstr "Chatten" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "To send messages, just type them in the \"message\" field on the bottom of the screen. You can send them by pressing the enter key on your keyboard, or by clicking on the \"send\" button." -msgstr "Um Nachrichten zu senden, geben Sie sie einfach in das Feld \"Nachricht\" am unteren Rand des Bildschirms ein. Sie können sie durch Drücken der Eingabetaste auf Ihrer Tastatur oder durch Klicken auf die Schaltfläche \"Senden\" senden." +msgid "" +"To send messages, just type them in the \"message\" field on the bottom of " +"the screen. You can send them by pressing the enter key on your keyboard, " +"or by clicking on the \"send\" button." +msgstr "" +"Um Nachrichten zu senden, geben Sie sie einfach in das Feld \"Nachricht\" am " +"unteren Rand des Bildschirms ein. Sie können sie durch Drücken der " +"Eingabetaste auf Ihrer Tastatur oder durch Klicken auf die Schaltfläche " +"\"Senden\" senden." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "If you want to add line breaks in your messages, you can use the \"shift+enter\" key combination." -msgstr "Wenn Sie in Ihren Nachrichten Zeilenumbrüche einfügen möchten, können Sie die Tastenkombination \"Umschalt+Eingabe\" verwenden." +msgid "" +"If you want to add line breaks in your messages, you can use the " +"\"shift+enter\" key combination." +msgstr "" +"Wenn Sie in Ihren Nachrichten Zeilenumbrüche einfügen möchten, können Sie " +"die Tastenkombination \"Umschalt+Eingabe\" verwenden." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "You can add emojis to your messages. You can for example use the emojis menu, or directly type emojis shortcuts like `:smiley:`." -msgstr "Sie können Emojis zu Ihren Nachrichten hinzufügen. Sie können zum Beispiel das Emojis-Menü verwenden oder direkt Emojis-Kurzbefehle wie `:smiley:` eingeben." +msgid "" +"You can add emojis to your messages. You can for example use the emojis " +"menu, or directly type emojis shortcuts like `:smiley:`." +msgstr "" +"Sie können Emojis zu Ihren Nachrichten hinzufügen. Sie können zum Beispiel " +"das Emojis-Menü verwenden oder direkt Emojis-Kurzbefehle wie `:smiley:` " +"eingeben." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "You can mention other participants. To do so, you can type the first nickname letters, then press the tab key. You can also type `@`: this will directly open the menu. You can also click on a nickname in the participants list to insert it in the message field." -msgstr "Sie können andere Teilnehmer erwähnen. Dazu können Sie die ersten Buchstaben des Spitznamens eingeben und dann die Tabulatortaste drücken. Sie können auch \"@\" tippen: Damit öffnen Sie direkt das Menü. Sie können auch auf einen Spitznamen in der Teilnehmerliste klicken, um ihn in das Nachrichtenfeld einzufügen." +msgid "" +"You can mention other participants. To do so, you can type the first " +"nickname letters, then press the tab key. You can also type `@`: this will " +"directly open the menu. You can also click on a nickname in the " +"participants list to insert it in the message field." +msgstr "" +"Sie können andere Teilnehmer erwähnen. Dazu können Sie die ersten " +"Buchstaben des Spitznamens eingeben und dann die Tabulatortaste drücken. " +"Sie können auch \"@\" tippen: Damit öffnen Sie direkt das Menü. Sie können " +"auch auf einen Spitznamen in der Teilnehmerliste klicken, um ihn in das " +"Nachrichtenfeld einzufügen." #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4833,21 +7672,28 @@ msgstr "Teilnehmerliste" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "To see the list of participants, just open the right menu:" -msgstr "Um die Liste der Teilnehmer zu sehen, öffnen Sie einfach das rechte Menü:" +msgstr "" +"Um die Liste der Teilnehmer zu sehen, öffnen Sie einfach das rechte Menü:" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "![Screenshot of a chat session, with on the right the list of participants.](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px \"Participants list\")" +msgid "" +"![Screenshot of a chat session, with on the right the list of participants.]" +"(/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow," +"border&height=200px \"Participants list\")" msgstr "" "![Screenshot einer Chatsitzung, rechts die Liste der Teilnehmer](/peertube-" -"plugin-livechat/images/" -"open_participants_list.png?classes=shadow,border&height=200px " -"\"Teilnehmerliste\")" +"plugin-livechat/images/open_participants_list.png?classes=shadow," +"border&height=200px \"Teilnehmerliste\")" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "You can see that some participants have special rights (moderator, owner, ...)." -msgstr "Sie können sehen, dass einige Teilnehmer besondere Rechte haben (Moderator, Eigentümer, ...)." +msgid "" +"You can see that some participants have special rights (moderator, " +"owner, ...)." +msgstr "" +"Sie können sehen, dass einige Teilnehmer besondere Rechte haben (Moderator, " +"Eigentümer, ...)." #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4857,8 +7703,17 @@ msgstr "Chat Dropdown Menü" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "There is a dropdown menu on the top of the chat, with some advanced features. This is especially useful for [moderation features](/peertube-plugin-livechat/documentation/user/streamers/moderation). Available features depends on your access level." -msgstr "Es gibt ein Dropdownmenü am oberen Rand des Chats, das einige erweiterte Funktionen enthält. Dies ist besonders nützlich für die [Moderationsfunktionen](/peertube-plugin-livechat/de/documentation/user/streamers/moderation). Die verfügbaren Funktionen hängen von Ihrer Zugriffsstufe ab." +msgid "" +"There is a dropdown menu on the top of the chat, with some advanced " +"features. This is especially useful for [moderation features](/peertube-" +"plugin-livechat/documentation/user/streamers/moderation). Available " +"features depends on your access level." +msgstr "" +"Es gibt ein Dropdownmenü am oberen Rand des Chats, das einige erweiterte " +"Funktionen enthält. Dies ist besonders nützlich für die " +"[Moderationsfunktionen](/peertube-plugin-livechat/de/documentation/user/" +"streamers/moderation). Die verfügbaren Funktionen hängen von Ihrer " +"Zugriffsstufe ab." #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4868,13 +7723,21 @@ msgstr "Vollbild öffnen" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "On top of the chat, there is a button to open the chat in fullscreen. This will open a new browser tab with the following content:" -msgstr "Oben im Chat gibt es eine Schaltfläche, um den Chat im Vollbildmodus zu öffnen. Dadurch wird eine neue Browser-Registerkarte mit dem folgenden Inhalt geöffnet:" +msgid "" +"On top of the chat, there is a button to open the chat in fullscreen. This " +"will open a new browser tab with the following content:" +msgstr "" +"Oben im Chat gibt es eine Schaltfläche, um den Chat im Vollbildmodus zu " +"öffnen. Dadurch wird eine neue Browser-Registerkarte mit dem folgenden " +"Inhalt geöffnet:" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md #: support/documentation/content/en/intro/_index.md -msgid "![Screenshot of a chat using the full web page.](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px \"Fullscreen chat screenshot\")" +msgid "" +"![Screenshot of a chat using the full web page.](/peertube-plugin-livechat/" +"images/fullscreen.png?classes=shadow,border&height=200px \"Fullscreen chat " +"screenshot\")" msgstr "" "![Screenshot des Chats über die gesamte Webseite.](/peertube-plugin-livechat/" "images/fullscreen.png?classes=shadow,border&height=200px \"Vollbild Chat " @@ -4883,7 +7746,8 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "It can be easier to chat using a full browser tab." -msgstr "Es kann einfacher sein, in einer seperaten Browser-Registerkarte zu chatten." +msgstr "" +"Es kann einfacher sein, in einer seperaten Browser-Registerkarte zu chatten." #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4893,8 +7757,12 @@ msgstr "Spitznamen ändern" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md -msgid "You can change your nickname by typing `/nick your_new_nickname` in the message field." -msgstr "Sie können Ihren Spitznamen ändern, indem Sie `/nick ihr_neuer_spitzname` in das Nachrichtenfeld eingeben." +msgid "" +"You can change your nickname by typing `/nick your_new_nickname` in the " +"message field." +msgstr "" +"Sie können Ihren Spitznamen ändern, indem Sie `/nick ihr_neuer_spitzname` in " +"das Nachrichtenfeld eingeben." #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md @@ -4915,36 +7783,68 @@ msgstr "XMPP Clients" #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "This chat plugin relies on the XMPP protocol (also known as Jabber). It is therefore possible to connect to the chats using [XMPP client software](https://en.wikipedia.org/wiki/XMPP#Clients). This can be useful for example to facilitate moderation operations." -msgstr "Dieses Chat-Plugin basiert auf dem XMPP-Protokoll (auch bekannt als Jabber). Es ist daher möglich, eine Verbindung zu den Chats herzustellen mit [XMPP-Client-Software](https://en.wikipedia.org/wiki/XMPP#Clients). Dies kann zum Beispiel nützlich sein, um Moderationsvorgänge zu erleichtern." - -#. type: Plain text -#: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "The features described on this page must be enabled and configured by your Peertube instance's administrators. You may therefore not have access to them." -msgstr "Die auf dieser Seite beschriebenen Funktionen müssen von den Administratoren Ihrer Peertube-Instanz aktiviert und konfiguriert werden. Sie haben daher möglicherweise keinen Zugriff auf sie." - -#. type: Plain text -#: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "If this feature is enabled on your instance, you can connect to Peertube chats using any XMPP account." -msgstr "Wenn diese Funktion in Ihrer Instanz aktiviert ist, können Sie mit jedem XMPP-Konto eine Verbindung zu Peertube Chats über ein beliebiges XMPP-Konto verbinden." - -#. type: Plain text -#: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "To get the address of the room you want to join, you can use the \"share chat\" button that is located above the chat:" -msgstr "Um die Adresse des Raums, dem Sie beitreten möchten, zu erhalten, können Sie die Schaltfläche \"Chat teilen\" verwenden die sich über dem Chat befindet:" - -#. type: Plain text -#: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "![Screenshot of the chat, with a share button on the top.](/peertube-plugin-livechat/images/share_button.png?classes=shadow,border&height=200px \"Share button\")" +msgid "" +"This chat plugin relies on the XMPP protocol (also known as Jabber). It is " +"therefore possible to connect to the chats using [XMPP client software]" +"(https://en.wikipedia.org/wiki/XMPP#Clients). This can be useful for " +"example to facilitate moderation operations." msgstr "" -"![Screenshot des Chats mit einer Schaltfläche zum Teilen am oberen Rand" -".](/peertube-plugin-livechat/images/" -"share_button.png?classes=shadow,border&height=200px \"Teilen Schaltfläche\")" +"Dieses Chat-Plugin basiert auf dem XMPP-Protokoll (auch bekannt als Jabber). " +"Es ist daher möglich, eine Verbindung zu den Chats herzustellen mit [XMPP-" +"Client-Software](https://en.wikipedia.org/wiki/XMPP#Clients). Dies kann zum " +"Beispiel nützlich sein, um Moderationsvorgänge zu erleichtern." #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "By default, the share button is only visible to the owner of the video, and the admins/moderators of the instance. However, admins can decide to display this button for everyone." -msgstr "Standardmäßig ist die Schaltfläche \"Freigeben\" nur für den Eigentümer des Videos und die Admins/Moderatoren der Instanz. Administratoren können jedoch festlegen, dass diese Schaltfläche für alle angezeigt wird." +msgid "" +"The features described on this page must be enabled and configured by your " +"Peertube instance's administrators. You may therefore not have access to " +"them." +msgstr "" +"Die auf dieser Seite beschriebenen Funktionen müssen von den Administratoren " +"Ihrer Peertube-Instanz aktiviert und konfiguriert werden. Sie haben daher " +"möglicherweise keinen Zugriff auf sie." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/xmpp_clients.md +msgid "" +"If this feature is enabled on your instance, you can connect to Peertube " +"chats using any XMPP account." +msgstr "" +"Wenn diese Funktion in Ihrer Instanz aktiviert ist, können Sie mit jedem " +"XMPP-Konto eine Verbindung zu Peertube Chats über ein beliebiges XMPP-Konto " +"verbinden." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/xmpp_clients.md +msgid "" +"To get the address of the room you want to join, you can use the \"share " +"chat\" button that is located above the chat:" +msgstr "" +"Um die Adresse des Raums, dem Sie beitreten möchten, zu erhalten, können Sie " +"die Schaltfläche \"Chat teilen\" verwenden die sich über dem Chat befindet:" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/xmpp_clients.md +msgid "" +"![Screenshot of the chat, with a share button on the top.](/peertube-plugin-" +"livechat/images/share_button.png?classes=shadow,border&height=200px \"Share " +"button\")" +msgstr "" +"![Screenshot des Chats mit einer Schaltfläche zum Teilen am oberen Rand.](/" +"peertube-plugin-livechat/images/share_button.png?classes=shadow," +"border&height=200px \"Teilen Schaltfläche\")" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/xmpp_clients.md +msgid "" +"By default, the share button is only visible to the owner of the video, and " +"the admins/moderators of the instance. However, admins can decide to " +"display this button for everyone." +msgstr "" +"Standardmäßig ist die Schaltfläche \"Freigeben\" nur für den Eigentümer des " +"Videos und die Admins/Moderatoren der Instanz. Administratoren können jedoch " +"festlegen, dass diese Schaltfläche für alle angezeigt wird." #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md @@ -4953,8 +7853,13 @@ msgstr "Wählen Sie dann \"{{% livechat_label connect_using_xmpp %}}\":" #. type: Plain text #: support/documentation/content/en/documentation/user/xmpp_clients.md -msgid "Then you just have to click on \"open\" or copy/paste the address of the chat room into your XMPP client (using the \"join a room\" feature)." -msgstr "Dann müssen Sie nur noch auf \"Öffnen\" klicken oder die Adresse des Chatraums in Ihren XMPP-Client kopieren/einfügen (mit der Funktion \"einem Raum beitreten\")." +msgid "" +"Then you just have to click on \"open\" or copy/paste the address of the " +"chat room into your XMPP client (using the \"join a room\" feature)." +msgstr "" +"Dann müssen Sie nur noch auf \"Öffnen\" klicken oder die Adresse des " +"Chatraums in Ihren XMPP-Client kopieren/einfügen (mit der Funktion \"einem " +"Raum beitreten\")." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/_index.md @@ -4970,8 +7875,15 @@ msgstr "Peertube livechat" #. type: Plain text #: support/documentation/content/en/_index.md -msgid "You can use the language selector in the left menu to view this documentation in different languages. Some translations are missing or incomplete. In this case, you'll see the English version of the text." -msgstr "Sie können die Sprachauswahl im linken Menü verwenden, um diese Dokumentation in verschiedenen Sprachen anzuzeigen. Einige Übersetzungen fehlen oder sind unvollständig. In diesem Fall sehen Sie die englische Version des Textes." +msgid "" +"You can use the language selector in the left menu to view this " +"documentation in different languages. Some translations are missing or " +"incomplete. In this case, you'll see the English version of the text." +msgstr "" +"Sie können die Sprachauswahl im linken Menü verwenden, um diese " +"Dokumentation in verschiedenen Sprachen anzuzeigen. Einige Übersetzungen " +"fehlen oder sind unvollständig. In diesem Fall sehen Sie die englische " +"Version des Textes." #. type: Plain text #: support/documentation/content/en/_index.md @@ -4980,18 +7892,37 @@ msgstr "Willkommen in der **Peertube Livechat Plugin** Dokumentation." #. type: Plain text #: support/documentation/content/en/_index.md -msgid "[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, that can provide both live streaming and VOD (Video On Demand) features. The present plugin adds chatting capatibilities to your Peertube installation, allowing viewers to interract with streamers." -msgstr "[Peertube](https://joinpeertube.org/) ist eine dezentrale Streaming-Plattform, die sowohl Live-Streaming als auch VOD (Video On Demand) anbieten kann. Das vorliegende Plugin fügt Ihrer Peertube-Installation Chat-Funktionen hinzu, die es den Zuschauern ermöglichen, sich mit den Streamern auszutauschen." +msgid "" +"[Peertube](https://joinpeertube.org/) is a decentralized streaming platform, " +"that can provide both live streaming and VOD (Video On Demand) features. " +"The present plugin adds chatting capatibilities to your Peertube " +"installation, allowing viewers to interract with streamers." +msgstr "" +"[Peertube](https://joinpeertube.org/) ist eine dezentrale Streaming-" +"Plattform, die sowohl Live-Streaming als auch VOD (Video On Demand) anbieten " +"kann. Das vorliegende Plugin fügt Ihrer Peertube-Installation Chat-" +"Funktionen hinzu, die es den Zuschauern ermöglichen, sich mit den Streamern " +"auszutauschen." #. type: Plain text #: support/documentation/content/en/_index.md -msgid "To have a glimpse on this plugin capabilities, checkout the [introduction](/peertube-plugin-livechat/intro/). For more precise informations, please find bellow the summary of this documentation." -msgstr "Um einen Einblick in die Fähigkeiten dieses Plugins zu bekommen, schauen Sie sich die [Einführung](/peertube-plugin-livechat/de/intro/) an. Für genauere Informationen, finden Sie unten die Zusammenfassung dieser Dokumentation." +msgid "" +"To have a glimpse on this plugin capabilities, checkout the [introduction](/" +"peertube-plugin-livechat/intro/). For more precise informations, please find " +"bellow the summary of this documentation." +msgstr "" +"Um einen Einblick in die Fähigkeiten dieses Plugins zu bekommen, schauen Sie " +"sich die [Einführung](/peertube-plugin-livechat/de/intro/) an. Für genauere " +"Informationen, finden Sie unten die Zusammenfassung dieser Dokumentation." #. type: Plain text #: support/documentation/content/en/_index.md -msgid "You can use the searchbox in the left menu to quickly find specific documentation parts." -msgstr "Sie können das Suchfeld im linken Menü verwenden, um bestimmte Teile der Dokumentation schnell zu finden." +msgid "" +"You can use the searchbox in the left menu to quickly find specific " +"documentation parts." +msgstr "" +"Sie können das Suchfeld im linken Menü verwenden, um bestimmte Teile der " +"Dokumentation schnell zu finden." #. type: Title ## #: support/documentation/content/en/intro/_index.md @@ -5001,33 +7932,61 @@ msgstr "Was ist das Livechat Plugin?" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat system for Peertube videos." -msgstr "Dieses [Peertube](https://joinpeertube.org/) Plugin ist dafür gedacht, ein Chatsystem für Peertube-Videos bereitzustellen." +msgid "" +"This [Peertube](https://joinpeertube.org/) plugin is meant to provide a chat " +"system for Peertube videos." +msgstr "" +"Dieses [Peertube](https://joinpeertube.org/) Plugin ist dafür gedacht, ein " +"Chatsystem für Peertube-Videos bereitzustellen." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "By default, once you have installed the plugin on your Peertube instance, a chat room will automatically be created for each live stream." -msgstr "Sobald Sie das Plugin auf Ihrer Peertube-Instanz installiert haben, wird standardmäßig für jeden Live-Stream automatisch ein Chatroom erstellt." +msgid "" +"By default, once you have installed the plugin on your Peertube instance, a " +"chat room will automatically be created for each live stream." +msgstr "" +"Sobald Sie das Plugin auf Ihrer Peertube-Instanz installiert haben, wird " +"standardmäßig für jeden Live-Stream automatisch ein Chatroom erstellt." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "On the following screenshot, you can see a classic Peertube video page, with a chat room on the right (click on the picture to view it full screen):" -msgstr "Auf dem folgenden Bildschirmfoto sehen Sie eine klassische Peertube-Videoseite mit einem Chatroom auf der rechten Seite (klicken Sie auf das Bild, um es im Vollbildmodus anzuzeigen):" +msgid "" +"On the following screenshot, you can see a classic Peertube video page, with " +"a chat room on the right (click on the picture to view it full screen):" +msgstr "" +"Auf dem folgenden Bildschirmfoto sehen Sie eine klassische Peertube-" +"Videoseite mit einem Chatroom auf der rechten Seite (klicken Sie auf das " +"Bild, um es im Vollbildmodus anzuzeigen):" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "The chat room will be accessible for all viewers, even those who don't have an account on your instance. Those \"anonymous\" users just have to choose a nickname before they can begin talking in the chat." -msgstr "Der Chat-Raum wird für alle Zuschauer zugänglich sein, auch für diejenigen, die kein Konto auf Ihrer Instanz haben. Diese \"anonymen\" Benutzer müssen nur einen Spitznamen wählen, bevor sie im Chat sprechen können." +msgid "" +"The chat room will be accessible for all viewers, even those who don't have " +"an account on your instance. Those \"anonymous\" users just have to choose a " +"nickname before they can begin talking in the chat." +msgstr "" +"Der Chat-Raum wird für alle Zuschauer zugänglich sein, auch für diejenigen, " +"die kein Konto auf Ihrer Instanz haben. Diese \"anonymen\" Benutzer müssen " +"nur einen Spitznamen wählen, bevor sie im Chat sprechen können." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "By default, the chat is displayed next to the video. But you can open it in another browser tab, using the button on top of it :" -msgstr "Standardmäßig wird der Chat neben dem Video angezeigt. Sie können ihn aber in einem anderen Browser-Tab öffnen, indem Sie die Schaltfläche oben verwenden:" +msgid "" +"By default, the chat is displayed next to the video. But you can open it in " +"another browser tab, using the button on top of it :" +msgstr "" +"Standardmäßig wird der Chat neben dem Video angezeigt. Sie können ihn aber " +"in einem anderen Browser-Tab öffnen, indem Sie die Schaltfläche oben " +"verwenden:" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "You can test the livechat plugin with this [demo page](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." -msgstr "Sie können das Livechat-Plugin mit dieser [Demo-Seite](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) testen." +msgid "" +"You can test the livechat plugin with this [demo page](https://www.yiny.org/" +"w/399a8d13-d4cf-4ef2-b843-98530a8ccbae)." +msgstr "" +"Sie können das Livechat-Plugin mit dieser [Demo-Seite](https://www.yiny.org/" +"w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) testen." #. type: Title ## #: support/documentation/content/en/intro/_index.md @@ -5037,18 +7996,29 @@ msgstr "Installation" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "As a Peertube administrator, you can setup this plugin on your instance simply by using the Peertube plugin marketplace included in the administration interface. Search for \"livechat\", then click \"install\": that's it!" -msgstr "Als Peertube-Administrator können Sie dieses Plugin auf Ihrer Instanz einrichten, indem Sie einfach den Peertube-Plugin-Marktplatz in der Administrationsoberfläche nutzen. Suchen Sie nach \"livechat\" und klicken Sie dann auf \"installieren\": Das war's!" +msgid "" +"As a Peertube administrator, you can setup this plugin on your instance " +"simply by using the Peertube plugin marketplace included in the " +"administration interface. Search for \"livechat\", then click \"install\": " +"that's it!" +msgstr "" +"Als Peertube-Administrator können Sie dieses Plugin auf Ihrer Instanz " +"einrichten, indem Sie einfach den Peertube-Plugin-Marktplatz in der " +"Administrationsoberfläche nutzen. Suchen Sie nach \"livechat\" und klicken " +"Sie dann auf \"installieren\": Das war's!" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "![Screenshot of Peertube plugins admin page. The search fields contains \"livechat\", and the search results show the livechat plugin.](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px \"Livechat installation\")" +msgid "" +"![Screenshot of Peertube plugins admin page. The search fields contains " +"\"livechat\", and the search results show the livechat plugin.](/peertube-" +"plugin-livechat/images/installation.png?classes=shadow,border&height=200px " +"\"Livechat installation\")" msgstr "" "![Screenshot der Peertube Plugin Administrator Seite. Die Suchfelder " -"enthalten \"livechat\", und die Suchergebnisse zeigen das Livechat-Plugin" -".](/peertube-plugin-livechat/images/" -"installation.png?classes=shadow,border&height=200px \"Livechat installation\"" -")" +"enthalten \"livechat\", und die Suchergebnisse zeigen das Livechat-Plugin.](/" +"peertube-plugin-livechat/images/installation.png?classes=shadow," +"border&height=200px \"Livechat installation\")" #. type: Title ## #: support/documentation/content/en/intro/_index.md @@ -5058,48 +8028,105 @@ msgstr "Livechat Funktionen" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "The plugin has many advanced features. As it is using the [XMPP](https://xmpp.org/) standard \"under the hood\", it is possible for Peertube administrators to allow advanced usages (connection using XMPP clients, chatbots, bridge to other chat protocols, ...). More information in the relevant sections of this documentation." -msgstr "Das Plugin hat viele erweiterte Funktionen. Da es den [XMPP](https://xmpp.org/)-Standard \"unter der Haube\" verwendet, ist es für Peertube-Administratoren möglich, fortgeschrittene Nutzungen zu ermöglichen (Verbindung über XMPP-Clients, Chatbots, Brücken zu anderen Chat-Protokollen, ...). Weitere Informationen finden Sie in den entsprechenden Abschnitten dieser Dokumentation." +msgid "" +"The plugin has many advanced features. As it is using the [XMPP](https://" +"xmpp.org/) standard \"under the hood\", it is possible for Peertube " +"administrators to allow advanced usages (connection using XMPP clients, " +"chatbots, bridge to other chat protocols, ...). More information in the " +"relevant sections of this documentation." +msgstr "" +"Das Plugin hat viele erweiterte Funktionen. Da es den [XMPP](https://xmpp." +"org/)-Standard \"unter der Haube\" verwendet, ist es für Peertube-" +"Administratoren möglich, fortgeschrittene Nutzungen zu ermöglichen " +"(Verbindung über XMPP-Clients, Chatbots, Brücken zu anderen Chat-" +"Protokollen, ...). Weitere Informationen finden Sie in den entsprechenden " +"Abschnitten dieser Dokumentation." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "Peertube is part of the fediverse: you can create a network of Peertube instances, sharing content between them." -msgstr "Peertube ist Teil des fediverse: Sie können ein Netzwerk von Peertube-Instanzen erstellen und Inhalte zwischen ihnen austauschen." +msgid "" +"Peertube is part of the fediverse: you can create a network of Peertube " +"instances, sharing content between them." +msgstr "" +"Peertube ist Teil des fediverse: Sie können ein Netzwerk von Peertube-" +"Instanzen erstellen und Inhalte zwischen ihnen austauschen." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "This plugin can handle federation: when viewing a livestream from a remote instance, you will join the chat room with your local account. You will be automatically connected with your current nickname and avatar." -msgstr "Dieses Plugin kann Föderation handhaben: Wenn Sie einen Livestream von einer entfernten Instanz ansehen, werden Sie dem Chatraum mit Ihrem lokalen Konto beitreten. Sie werden automatisch mit Ihrem aktuellen Nickname und Avatar verbunden." +msgid "" +"This plugin can handle federation: when viewing a livestream from a remote " +"instance, you will join the chat room with your local account. You will be " +"automatically connected with your current nickname and avatar." +msgstr "" +"Dieses Plugin kann Föderation handhaben: Wenn Sie einen Livestream von einer " +"entfernten Instanz ansehen, werden Sie dem Chatraum mit Ihrem lokalen Konto " +"beitreten. Sie werden automatisch mit Ihrem aktuellen Nickname und Avatar " +"verbunden." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "Of course, for the federation to work, the plugin must be installed on both instances." -msgstr "Damit der Zusammenschluss funktioniert, muss das Plugin natürlich auf beiden Instanzen installiert sein." +msgid "" +"Of course, for the federation to work, the plugin must be installed on both " +"instances." +msgstr "" +"Damit der Zusammenschluss funktioniert, muss das Plugin natürlich auf beiden " +"Instanzen installiert sein." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "Some times, you have to protect your community from bad people. As an instance administrator, you can choose to disallow federation for the livechat plugin. If remote actors behave badly, streamers, moderators and administrators can ban or mute users." -msgstr "Manchmal muss man seine Community vor bösen Menschen schützen. Als Instanzadministrator können Sie die Föderation für das Livechat-Plugin deaktivieren. Wenn sich entfernte Akteure schlecht benehmen, können Streamer, Moderatoren und Administratoren Nutzer sperren oder stummschalten." +msgid "" +"Some times, you have to protect your community from bad people. As an " +"instance administrator, you can choose to disallow federation for the " +"livechat plugin. If remote actors behave badly, streamers, moderators and " +"administrators can ban or mute users." +msgstr "" +"Manchmal muss man seine Community vor bösen Menschen schützen. Als " +"Instanzadministrator können Sie die Föderation für das Livechat-Plugin " +"deaktivieren. Wenn sich entfernte Akteure schlecht benehmen, können " +"Streamer, Moderatoren und Administratoren Nutzer sperren oder stummschalten." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "This plugin comes with a built-in [chat bot](/peertube-plugin-livechat/documentation/user/streamers/bot/). Check its documentation for more information." -msgstr "Dieses Plugin verfügt über einen eingebauten [Chatbot](/peertube-plugin-livechat/de/documentation/user/streamers/bot). Weitere Informationen dazu finden Sie in der Dokumentation." +msgid "" +"This plugin comes with a built-in [chat bot](/peertube-plugin-livechat/" +"documentation/user/streamers/bot/). Check its documentation for more " +"information." +msgstr "" +"Dieses Plugin verfügt über einen eingebauten [Chatbot](/peertube-plugin-" +"livechat/de/documentation/user/streamers/bot). Weitere Informationen dazu " +"finden Sie in der Dokumentation." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "You can also plug in any other XMPP chat bot, using [XMPP External Components](https://prosody.im/doc/components). To do so, you just have to configure External Components access in the [plugin settings](/peertube-plugin-livechat/documentation/admin/settings)." -msgstr "Sie können auch jeden anderen XMPP-Chatbot einbinden, indem Sie [XMPP External Components](https://prosody.im/doc/components) verwenden. Dazu müssen Sie nur den Zugriff auf externe Komponenten in den [Plugin-Einstellungen](/peertube-plugin-livechat/de/documentation/admin/settings) konfigurieren." +msgid "" +"You can also plug in any other XMPP chat bot, using [XMPP External " +"Components](https://prosody.im/doc/components). To do so, you just have to " +"configure External Components access in the [plugin settings](/peertube-" +"plugin-livechat/documentation/admin/settings)." +msgstr "" +"Sie können auch jeden anderen XMPP-Chatbot einbinden, indem Sie [XMPP " +"External Components](https://prosody.im/doc/components) verwenden. Dazu " +"müssen Sie nur den Zugriff auf externe Komponenten in den [Plugin-" +"Einstellungen](/peertube-plugin-livechat/de/documentation/admin/settings) " +"konfigurieren." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "When joining a room, you will see previous messages. Even those sent before you joined the room." -msgstr "Wenn Sie einem Raum beitreten, sehen Sie frühere Nachrichten. Auch solche, die gesendet wurden, bevor Sie dem Raum beigetreten sind." +msgid "" +"When joining a room, you will see previous messages. Even those sent before " +"you joined the room." +msgstr "" +"Wenn Sie einem Raum beitreten, sehen Sie frühere Nachrichten. Auch solche, " +"die gesendet wurden, bevor Sie dem Raum beigetreten sind." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "This behaviour can be changed room by room, and default retention duration can be chosen by instance's administrators." -msgstr "Dieses Verhalten kann von Raum zu Raum geändert werden, und die Standardverweildauer kann von den Instanzadministratoren festgelegt werden." +msgid "" +"This behaviour can be changed room by room, and default retention duration " +"can be chosen by instance's administrators." +msgstr "" +"Dieses Verhalten kann von Raum zu Raum geändert werden, und die " +"Standardverweildauer kann von den Instanzadministratoren festgelegt werden." #. type: Title ## #: support/documentation/content/en/intro/_index.md @@ -5109,18 +8136,34 @@ msgstr "Integrieren Sie den Chat in Ihren Live-Stream" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "When using software as [OBS](https://obsproject.com) for you live stream, you can embed the chat in the video stream. This is for example useful for replays." -msgstr "Wenn Sie Software wie [OBS](https://obsproject.com) für Ihren Live-Stream verwenden, können Sie den Chat in den Videostream einbetten. Dies ist zum Beispiel für Wiederholungen nützlich." +msgid "" +"When using software as [OBS](https://obsproject.com) for you live stream, " +"you can embed the chat in the video stream. This is for example useful for " +"replays." +msgstr "" +"Wenn Sie Software wie [OBS](https://obsproject.com) für Ihren Live-Stream " +"verwenden, können Sie den Chat in den Videostream einbetten. Dies ist zum " +"Beispiel für Wiederholungen nützlich." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "In the following screenshot, you can see a live replay, where the chat content is embeded on bottom of the video:" -msgstr "Im folgenden Screenshot sehen Sie eine Live-Wiedergabe, bei der der Chat-Inhalt am unteren Rand des Videos eingebettet ist:" +msgid "" +"In the following screenshot, you can see a live replay, where the chat " +"content is embeded on bottom of the video:" +msgstr "" +"Im folgenden Screenshot sehen Sie eine Live-Wiedergabe, bei der der Chat-" +"Inhalt am unteren Rand des Videos eingebettet ist:" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "In the following screenshot, you can see an OBS setup, where the chat is included as a source in the current scene (background color can be changed, and can be transparent):" -msgstr "Im folgenden Screenshot sehen Sie ein OBS-Setup, bei dem der Chat als Quelle in die aktuelle Szene eingebunden ist (die Hintergrundfarbe kann geändert werden und kann transparent sein):" +msgid "" +"In the following screenshot, you can see an OBS setup, where the chat is " +"included as a source in the current scene (background color can be changed, " +"and can be transparent):" +msgstr "" +"Im folgenden Screenshot sehen Sie ein OBS-Setup, bei dem der Chat als Quelle " +"in die aktuelle Szene eingebunden ist (die Hintergrundfarbe kann geändert " +"werden und kann transparent sein):" #. type: Title ## #: support/documentation/content/en/intro/_index.md @@ -5130,18 +8173,34 @@ msgstr "Andere Verwendungen" #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "By default, each streamer will be able to activate/deactivate the chat for their live streams." -msgstr "Standardmäßig kann jeder Streamer den Chat für seine Live-Streams aktivieren/deaktivieren." +msgid "" +"By default, each streamer will be able to activate/deactivate the chat for " +"their live streams." +msgstr "" +"Standardmäßig kann jeder Streamer den Chat für seine Live-Streams aktivieren/" +"deaktivieren." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "But on the instance level, administrators can choose to activate the chat for all videos (live and/or VOD)." -msgstr "Auf der Instanzebene können Administratoren jedoch den Chat für alle Videos (live und/oder VOD) aktivieren." +msgid "" +"But on the instance level, administrators can choose to activate the chat " +"for all videos (live and/or VOD)." +msgstr "" +"Auf der Instanzebene können Administratoren jedoch den Chat für alle Videos " +"(live und/oder VOD) aktivieren." #. type: Plain text #: support/documentation/content/en/intro/_index.md -msgid "You can even activate the chat for specific VOD videos. This is how the [demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page works: it is not a live stream, but I have activated the chat specifically for this video." -msgstr "Sie können den Chat sogar für bestimmte VOD-Videos aktivieren. So funktioniert die [Demonstrationsseite](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae): Es handelt sich nicht um einen Live-Stream, aber ich habe den Chat speziell für dieses Video aktiviert." +msgid "" +"You can even activate the chat for specific VOD videos. This is how the " +"[demo](https://www.yiny.org/w/399a8d13-d4cf-4ef2-b843-98530a8ccbae) page " +"works: it is not a live stream, but I have activated the chat specifically " +"for this video." +msgstr "" +"Sie können den Chat sogar für bestimmte VOD-Videos aktivieren. So " +"funktioniert die [Demonstrationsseite](https://www.yiny.org/w/399a8d13-" +"d4cf-4ef2-b843-98530a8ccbae): Es handelt sich nicht um einen Live-Stream, " +"aber ich habe den Chat speziell für dieses Video aktiviert." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/issues/_index.md @@ -5157,85 +8216,209 @@ msgstr "Fehlerverfolgung (Bug tracking) und neue Funktionen" #. type: Plain text #: support/documentation/content/en/issues/_index.md -msgid "If you have new feature requests, bugs, or difficulties to setup the plugin, you can use the [Github issue tracker](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues). If possible, try using english or french." -msgstr "Wenn Sie neue Funktionswünsche, Fehler (Bugs) oder Schwierigkeiten bei der Einrichtung des Plugins haben, können Sie den [Github issue tracker](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues) verwenden." +msgid "" +"If you have new feature requests, bugs, or difficulties to setup the plugin, " +"you can use the [Github issue tracker](https://github.com/JohnXLivingston/" +"peertube-plugin-livechat/issues). If possible, try using english or french." +msgstr "" +"Wenn Sie neue Funktionswünsche, Fehler (Bugs) oder Schwierigkeiten bei der " +"Einrichtung des Plugins haben, können Sie den [Github issue tracker](https://" +"github.com/JohnXLivingston/peertube-plugin-livechat/issues) verwenden." #. type: Plain text #: support/documentation/content/en/issues/_index.md -msgid "To have a glimpse to the roadmap for upcoming features, please refer to:" +msgid "" +"To have a glimpse to the roadmap for upcoming features, please refer to:" msgstr "Einen Einblick in die Roadmap für kommende Funktionen finden Sie hier:" #. type: Bullet: '- ' #: support/documentation/content/en/issues/_index.md -msgid "this [github project](https://github.com/users/JohnXLivingston/projects/1)." +msgid "" +"this [github project](https://github.com/users/JohnXLivingston/projects/1)." msgstr "[Github Project](https://github.com/users/JohnXLivingston/projects/1)." #. type: Bullet: '- ' #: support/documentation/content/en/issues/_index.md -msgid "the [milestones on github](https://github.com/JohnXLivingston/peertube-plugin-livechat/milestones)." -msgstr "[Meilensteine auf Github](https://github.com/JohnXLivingston/peertube-plugin-livechat/milestones)." +msgid "" +"the [milestones on github](https://github.com/JohnXLivingston/peertube-" +"plugin-livechat/milestones)." +msgstr "" +"[Meilensteine auf Github](https://github.com/JohnXLivingston/peertube-plugin-" +"livechat/milestones)." #. type: Plain text #: support/documentation/content/en/issues/_index.md -msgid "If you are a webdesigner or a ConverseJS/Prosody/XMPP expert, and want to help improve this plugin, you are welcome." -msgstr "Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind und helfen wollen, dieses Plugin zu verbessern, sind Sie gerne willkommen." +msgid "" +"If you are a webdesigner or a ConverseJS/Prosody/XMPP expert, and want to " +"help improve this plugin, you are welcome." +msgstr "" +"Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind und " +"helfen wollen, dieses Plugin zu verbessern, sind Sie gerne willkommen." -#~ msgid "![External login button](/peertube-plugin-livechat/images/external_login_button.png?classes=shadow,border&height=200px)" -#~ msgstr "![Externes Anmelden Schaltfläche](/peertube-plugin-livechat/images/external_login_button.png?classes=shadow,border&height=200px)" +#~ msgid "This feature comes with the livechat plugin version 11.0.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 11.0.0 verfügbar sein." -#~ msgid "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" -#~ msgstr "![Link Teilen Popup](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px)" +#~ msgid "This feature comes with the livechat plugin version 10.1.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.1.0 verfügbar sein." -#~ msgid "![Share link popup - dock tab](/peertube-plugin-livechat/images/share_dock.png?classes=shadow,border&height=200px)" -#~ msgstr "![Link teilen Fenster - Dock Reiter](/peertube-plugin-livechat/images/share_dock.png?classes=shadow,border&height=200px)" +#~ msgid "This feature comes with the livechat plugin version 11.1.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 11.1.0 verfügbar sein." -#~ msgid "![OBS - Dock](/peertube-plugin-livechat/images/obs_dock.png?classes=shadow,border&height=200px)" -#~ msgstr "![OBS - Dock](/peertube-plugin-livechat/images/obs_dock.png?classes=shadow,border&height=200px)" +#~ msgid "This feature comes with the livechat plugin version 10.3.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.3.0 verfügbar sein." -#~ msgid "![Share link popup - web tab](/peertube-plugin-livechat/images/share_web.png?classes=shadow,border&height=200px)" -#~ msgstr "![Link teilen Fenster - Web Reiter](/peertube-plugin-livechat/images/share_web.png?classes=shadow,border&height=200px)" +#~ msgid "This feature comes with the livechat plugin version 10.2.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.2.0 verfügbar sein." -#~ msgid "![Chatrooms menu](/peertube-plugin-livechat/images/chatrooms_menu.png?classes=shadow,border&height=400px)" -#~ msgstr "![Chaträume Menü](/peertube-plugin-livechat/images/chatrooms_menu.png?classes=shadow,border&height=400px)" +#~ msgid "This feature comes with the livechat plugin version 8.3.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 8.3.0 verfügbar sein." -#~ msgid "![Message history search](/peertube-plugin-livechat/images/message_search.png?classes=shadow,border&height=200px)" -#~ msgstr "![Nachrichtenverlaufssuche](/peertube-plugin-livechat/images/message_search.png?classes=shadow,border&height=200px)" +#~ msgid "This feature comes with the livechat plugin version 10.0.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.0.0 verfügbar sein." -#~ msgid "![Moderator Notes Application](/peertube-plugin-livechat/images/moderator_notes_app_video_1.png?classes=shadow,border&height=200px)" -#~ msgstr "![Moderationsnotizen Anwendung](/peertube-plugin-livechat/images/moderator_notes_app_video_1.png?classes=shadow,border&height=200px)" +#~ msgid "This feature comes with the livechat plugin version 9.0.0." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 9.0.0 verfügbar sein." -#~ msgid "![Poll form](/peertube-plugin-livechat/images/polls_form.png?classes=shadow,border&height=200px)" -#~ msgstr "![Umfrageformular](/peertube-plugin-livechat/images/polls_form.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![External login button](/peertube-plugin-livechat/images/" +#~ "external_login_button.png?classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Externes Anmelden Schaltfläche](/peertube-plugin-livechat/images/" +#~ "external_login_button.png?classes=shadow,border&height=200px)" -#~ msgid "![Poll start](/peertube-plugin-livechat/images/polls_start.png?classes=shadow,border&height=200px)" -#~ msgstr "![Umfrage Start](/peertube-plugin-livechat/images/polls_start.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Share link popup](/peertube-plugin-livechat/images/share_readonly.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Link Teilen Popup](/peertube-plugin-livechat/images/share_readonly.png?" +#~ "classes=shadow,border&height=200px)" -#~ msgid "![Poll end](/peertube-plugin-livechat/images/polls_end.png?classes=shadow,border&height=200px)" -#~ msgstr "![Umfrageende](/peertube-plugin-livechat/images/polls_end.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Share link popup - dock tab](/peertube-plugin-livechat/images/" +#~ "share_dock.png?classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Link teilen Fenster - Dock Reiter](/peertube-plugin-livechat/images/" +#~ "share_dock.png?classes=shadow,border&height=200px)" -#~ msgid "![Slow mode infobox](/peertube-plugin-livechat/images/slow_mode.png?classes=shadow,border&height=400px)" -#~ msgstr "![Infobox Langsamer Modus](/peertube-plugin-livechat/images/slow_mode.png?classes=shadow,border&height=400px)" +#~ msgid "" +#~ "![OBS - Dock](/peertube-plugin-livechat/images/obs_dock.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![OBS - Dock](/peertube-plugin-livechat/images/obs_dock.png?" +#~ "classes=shadow,border&height=200px)" -#~ msgid "![Task Application](/peertube-plugin-livechat/images/task_app_video_1.png?classes=shadow,border&height=200px)" -#~ msgstr "![Aufgabenanwendung](/peertube-plugin-livechat/images/task_app_video_1.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Share link popup - web tab](/peertube-plugin-livechat/images/share_web." +#~ "png?classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Link teilen Fenster - Web Reiter](/peertube-plugin-livechat/images/" +#~ "share_web.png?classes=shadow,border&height=200px)" -#~ msgid "![Task Application](/peertube-plugin-livechat/images/task_app_fullpage_1.png?classes=shadow,border&height=200px)" -#~ msgstr "![Aufgabenanwendung](/peertube-plugin-livechat/images/task_app_fullpage_1.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Chatrooms menu](/peertube-plugin-livechat/images/chatrooms_menu.png?" +#~ "classes=shadow,border&height=400px)" +#~ msgstr "" +#~ "![Chaträume Menü](/peertube-plugin-livechat/images/chatrooms_menu.png?" +#~ "classes=shadow,border&height=400px)" -#~ msgid "![Tasks](/peertube-plugin-livechat/images/task_app_task_2.png?classes=shadow,border&height=200px)" -#~ msgstr "![Aufgaben](/peertube-plugin-livechat/images/task_app_task_2.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Message history search](/peertube-plugin-livechat/images/message_search." +#~ "png?classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Nachrichtenverlaufssuche](/peertube-plugin-livechat/images/" +#~ "message_search.png?classes=shadow,border&height=200px)" -#~ msgid "![Task created](/peertube-plugin-livechat/images/task_from_message_3.png?classes=shadow,border&height=200px)" -#~ msgstr "![Aufgabe erstellt](/peertube-plugin-livechat/images/task_from_message_3.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Moderator Notes Application](/peertube-plugin-livechat/images/" +#~ "moderator_notes_app_video_1.png?classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Moderationsnotizen Anwendung](/peertube-plugin-livechat/images/" +#~ "moderator_notes_app_video_1.png?classes=shadow,border&height=200px)" -#~ msgid "![Terms](/peertube-plugin-livechat/images/terms.png?classes=shadow,border&height=400px)" -#~ msgstr "![Bedingungen](/peertube-plugin-livechat/images/terms.png?classes=shadow,border&height=400px)" +#~ msgid "" +#~ "![Poll form](/peertube-plugin-livechat/images/polls_form.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Umfrageformular](/peertube-plugin-livechat/images/polls_form.png?" +#~ "classes=shadow,border&height=200px)" -#~ msgid "![External login dialog](/peertube-plugin-livechat/images/external_login_dialog.png?classes=shadow,border&height=200px)" -#~ msgstr "![Externer Anmeldedialog](/peertube-plugin-livechat/images/external_login_dialog.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Poll start](/peertube-plugin-livechat/images/polls_start.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Umfrage Start](/peertube-plugin-livechat/images/polls_start.png?" +#~ "classes=shadow,border&height=200px)" -#~ msgid "![Share XMPP](/peertube-plugin-livechat/images/share_xmpp_dialog.png?classes=shadow,border&height=200px)" -#~ msgstr "![XMPP Link teilen](/peertube-plugin-livechat/images/share_xmpp_dialog.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "![Poll end](/peertube-plugin-livechat/images/polls_end.png?classes=shadow," +#~ "border&height=200px)" +#~ msgstr "" +#~ "![Umfrageende](/peertube-plugin-livechat/images/polls_end.png?" +#~ "classes=shadow,border&height=200px)" + +#~ msgid "" +#~ "![Slow mode infobox](/peertube-plugin-livechat/images/slow_mode.png?" +#~ "classes=shadow,border&height=400px)" +#~ msgstr "" +#~ "![Infobox Langsamer Modus](/peertube-plugin-livechat/images/slow_mode.png?" +#~ "classes=shadow,border&height=400px)" + +#~ msgid "" +#~ "![Task Application](/peertube-plugin-livechat/images/task_app_video_1.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Aufgabenanwendung](/peertube-plugin-livechat/images/task_app_video_1." +#~ "png?classes=shadow,border&height=200px)" + +#~ msgid "" +#~ "![Task Application](/peertube-plugin-livechat/images/task_app_fullpage_1." +#~ "png?classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Aufgabenanwendung](/peertube-plugin-livechat/images/task_app_fullpage_1." +#~ "png?classes=shadow,border&height=200px)" + +#~ msgid "" +#~ "![Tasks](/peertube-plugin-livechat/images/task_app_task_2.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Aufgaben](/peertube-plugin-livechat/images/task_app_task_2.png?" +#~ "classes=shadow,border&height=200px)" + +#~ msgid "" +#~ "![Task created](/peertube-plugin-livechat/images/task_from_message_3.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Aufgabe erstellt](/peertube-plugin-livechat/images/task_from_message_3." +#~ "png?classes=shadow,border&height=200px)" + +#~ msgid "" +#~ "![Terms](/peertube-plugin-livechat/images/terms.png?classes=shadow," +#~ "border&height=400px)" +#~ msgstr "" +#~ "![Bedingungen](/peertube-plugin-livechat/images/terms.png?classes=shadow," +#~ "border&height=400px)" + +#~ msgid "" +#~ "![External login dialog](/peertube-plugin-livechat/images/" +#~ "external_login_dialog.png?classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![Externer Anmeldedialog](/peertube-plugin-livechat/images/" +#~ "external_login_dialog.png?classes=shadow,border&height=200px)" + +#~ msgid "" +#~ "![Share XMPP](/peertube-plugin-livechat/images/share_xmpp_dialog.png?" +#~ "classes=shadow,border&height=200px)" +#~ msgstr "" +#~ "![XMPP Link teilen](/peertube-plugin-livechat/images/share_xmpp_dialog." +#~ "png?classes=shadow,border&height=200px)" #, fuzzy, no-wrap #~ msgid "" @@ -5244,33 +8427,55 @@ msgstr "Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind u #~ msgstr "Das Plugin wird von [John Livingston](https://www.john-livingston.fr/) betrieben." #, fuzzy -#~ msgid "title: \"External Authentication\" description: \"Plugin Peertube Livechat settings - External Authentication\" weight: 15 chapter: false" +#~ msgid "" +#~ "title: \"External Authentication\" description: \"Plugin Peertube " +#~ "Livechat settings - External Authentication\" weight: 15 chapter: false" #~ msgstr "Plugin Peertube Livechat Einstellungen - Externe Authentifizierung" #, fuzzy -#~ msgid "title: \"User documentation\" description: \"Plugin peertube-plugin-livechat user documentation\" weight: 10 chapter: false" -#~ msgstr "Für die Benutzerdokumentation, siehe [Benutzerdokumentation](/peertube-plugin-livechat/de/documentation/user/viewers/)" +#~ msgid "" +#~ "title: \"User documentation\" description: \"Plugin peertube-plugin-" +#~ "livechat user documentation\" weight: 10 chapter: false" +#~ msgstr "" +#~ "Für die Benutzerdokumentation, siehe [Benutzerdokumentation](/peertube-" +#~ "plugin-livechat/de/documentation/user/viewers/)" #, fuzzy -#~ msgid "title: \"Some basics\" description: \"Some basics about how to setup and use the chat for your live stream\" weight: 10 chapter: false" -#~ msgstr "Einige grundlegende Informationen zur Einrichtung und Nutzung des Chats für Ihren Livestream" +#~ msgid "" +#~ "title: \"Some basics\" description: \"Some basics about how to setup and " +#~ "use the chat for your live stream\" weight: 10 chapter: false" +#~ msgstr "" +#~ "Einige grundlegende Informationen zur Einrichtung und Nutzung des Chats " +#~ "für Ihren Livestream" #, fuzzy -#~ msgid "title: \"Timers\" description: \"The bot can send periodically some messages.\" weight: 20 chapter: false" -#~ msgstr "Der Chatbot kann in regelmäßigen Abständen einige Nachrichten senden." +#~ msgid "" +#~ "title: \"Timers\" description: \"The bot can send periodically some " +#~ "messages.\" weight: 20 chapter: false" +#~ msgstr "" +#~ "Der Chatbot kann in regelmäßigen Abständen einige Nachrichten senden." #, fuzzy -#~ msgid "title: \"Moderation\" description: \"Plugin peertube-plugin-livechat advanced moderation features\" weight: 60 chapter: false" +#~ msgid "" +#~ "title: \"Moderation\" description: \"Plugin peertube-plugin-livechat " +#~ "advanced moderation features\" weight: 60 chapter: false" #~ msgstr "Plugin peertube-plugin-livechat Erweiterte Moderationsfunktionen" -#~ msgid "All instance moderators and admins will be owner of created chat rooms. The video owner will be admin in the chat room." -#~ msgstr "Alle Instanzmoderatoren und Admins sind Eigentümer der erstellten Chaträume. Der Eigentümer des Videos wird der Administrator des Chatraums sein." +#~ msgid "" +#~ "All instance moderators and admins will be owner of created chat rooms. " +#~ "The video owner will be admin in the chat room." +#~ msgstr "" +#~ "Alle Instanzmoderatoren und Admins sind Eigentümer der erstellten " +#~ "Chaträume. Der Eigentümer des Videos wird der Administrator des " +#~ "Chatraums sein." #~ msgid "So can also use provider such as Google, Facebook, ..." #~ msgstr "So können auch Anbieter wie Google, Facebook, ... genutzt werden." #~ msgid "This features comes with the livechat plugin version 8.3.0." -#~ msgstr "Diese Funktionen werden mit dem Livechatplugin Version 8.3.0 verfügbar sein." +#~ msgstr "" +#~ "Diese Funktionen werden mit dem Livechatplugin Version 8.3.0 verfügbar " +#~ "sein." #, no-wrap #~ msgid "Default channel value" @@ -5280,11 +8485,38 @@ msgstr "Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind u #~ msgid "Modifying the value for an existing chatroom" #~ msgstr "Ändern des Wertes für einen bestehenden Chatraum" -#~ msgid "As there was a security issue with livechat plugin v8.3.1 (leaking the full list of instance moderator and administrators), the following only works for users that are also administrator or moderator on the Peertube instance. An alternative method to set this for existing chatrooms will be provided in a later livechat version, when the issue will be properly fixed. For now, if you are not moderator or administrator on the Peertube instance, you can change the slow mode setting by deleting your room (it will be recreated with the value set in the channel options). This solution is not optimal, and we apologize for the inconvenience." -#~ msgstr "Da es ein Sicherheitsproblem mit dem Livechat-Plugin v8.3.1 gab (Die vollständigen Liste der Moderatoren und Administratoren der Instanz wurde angezeigt), funktioniert das Folgende nur für Benutzer, die auch Administrator oder Moderator der Peertube-Instanz sind. Eine alternative Methode, um dies für bestehende Chaträume einzustellen, wird in einer späteren Livechat-Version zur Verfügung gestellt werden, wenn das Problem richtig behoben ist. Im Moment können Sie, wenn Sie nicht Moderator oder Administrator auf der Peertube-Instanz sind, die Einstellung des langsamen Modus nur ändern, indem Sie Ihren Raum löschen (er wird mit dem in den Kanaloptionen eingestellten Wert neu erstellt). Diese Lösung ist nicht optimal, und wir entschuldigen uns für die Unannehmlichkeiten." +#~ msgid "" +#~ "As there was a security issue with livechat plugin v8.3.1 (leaking the " +#~ "full list of instance moderator and administrators), the following only " +#~ "works for users that are also administrator or moderator on the Peertube " +#~ "instance. An alternative method to set this for existing chatrooms will " +#~ "be provided in a later livechat version, when the issue will be properly " +#~ "fixed. For now, if you are not moderator or administrator on the " +#~ "Peertube instance, you can change the slow mode setting by deleting your " +#~ "room (it will be recreated with the value set in the channel options). " +#~ "This solution is not optimal, and we apologize for the inconvenience." +#~ msgstr "" +#~ "Da es ein Sicherheitsproblem mit dem Livechat-Plugin v8.3.1 gab (Die " +#~ "vollständigen Liste der Moderatoren und Administratoren der Instanz wurde " +#~ "angezeigt), funktioniert das Folgende nur für Benutzer, die auch " +#~ "Administrator oder Moderator der Peertube-Instanz sind. Eine alternative " +#~ "Methode, um dies für bestehende Chaträume einzustellen, wird in einer " +#~ "späteren Livechat-Version zur Verfügung gestellt werden, wenn das Problem " +#~ "richtig behoben ist. Im Moment können Sie, wenn Sie nicht Moderator oder " +#~ "Administrator auf der Peertube-Instanz sind, die Einstellung des " +#~ "langsamen Modus nur ändern, indem Sie Ihren Raum löschen (er wird mit dem " +#~ "in den Kanaloptionen eingestellten Wert neu erstellt). Diese Lösung ist " +#~ "nicht optimal, und wir entschuldigen uns für die Unannehmlichkeiten." -#~ msgid "To modify the slow mode duration for an existing chatroom, you first have to open it in [full screen mode](/peertube-plugin-livechat/documentation/user/viewers). Then, open the top menu and click on \"configure\"." -#~ msgstr "Um die Dauer des langsamen Modus für einen bestehenden Chatroom zu ändern, müssen Sie ihn zunächst im [Vollbildmodus](/peertube-plugin-livechat/de/documentation/user/viewers) öffnen. Öffnen Sie dann das obere Menü und klicken Sie auf \"Konfigurieren\"." +#~ msgid "" +#~ "To modify the slow mode duration for an existing chatroom, you first have " +#~ "to open it in [full screen mode](/peertube-plugin-livechat/documentation/" +#~ "user/viewers). Then, open the top menu and click on \"configure\"." +#~ msgstr "" +#~ "Um die Dauer des langsamen Modus für einen bestehenden Chatroom zu " +#~ "ändern, müssen Sie ihn zunächst im [Vollbildmodus](/peertube-plugin-" +#~ "livechat/de/documentation/user/viewers) öffnen. Öffnen Sie dann das " +#~ "obere Menü und klicken Sie auf \"Konfigurieren\"." #~ msgid "You just have to change the \"slow mode\" field value." #~ msgstr "Sie müssen nur den Wert des Feldes \"langsamer Modus\" ändern." @@ -5292,43 +8524,109 @@ msgstr "Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind u #~ msgid "The modification will immediatly apply." #~ msgstr "Die Änderung wird sofort wirksam." -#~ msgid "This value will apply as the default value for new chatrooms. It will not apply on already existing chatrooms." -#~ msgstr "Dieser Wert gilt als Standardwert für neue Chaträume. Er gilt nicht für bereits bestehende Chaträume." +#~ msgid "" +#~ "This value will apply as the default value for new chatrooms. It will " +#~ "not apply on already existing chatrooms." +#~ msgstr "" +#~ "Dieser Wert gilt als Standardwert für neue Chaträume. Er gilt nicht für " +#~ "bereits bestehende Chaträume." -#~ msgid "{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube avatar generator](https://www.peppercarrot.com/extras/html/2023_peertube-generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/) license" -#~ msgstr "{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube Avatargenerator](https://www.peppercarrot.com/extras/html/2023_peertube-generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" +#~ msgid "" +#~ "{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube " +#~ "avatar generator](https://www.peppercarrot.com/extras/html/2023_peertube-" +#~ "generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/) license" +#~ msgstr "" +#~ "{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube " +#~ "Avatargenerator](https://www.peppercarrot.com/extras/html/2023_peertube-" +#~ "generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/) Lizenz" -#~ msgid "![Cats](/peertube-plugin-livechat/images/avatar_cat.png?classes=shadow,border&height=40px) license" -#~ msgstr "![Katzen](/peertube-plugin-livechat/images/avatar_cat.png?classes=shadow,border&height=40px) Lizenz" +#~ msgid "" +#~ "![Cats](/peertube-plugin-livechat/images/avatar_cat.png?classes=shadow," +#~ "border&height=40px) license" +#~ msgstr "" +#~ "![Katzen](/peertube-plugin-livechat/images/avatar_cat.png?classes=shadow," +#~ "border&height=40px) Lizenz" -#~ msgid "{{% livechat_label avatar_set_option_bird %}}: [David Revoy's bird avatar generator](https://www.peppercarrot.com/extras/html/2019_bird-generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/)" -#~ msgstr "{{% livechat_label avatar_set_option_bird %}}: [David Revoy's Vögel Avatargenerator](https://www.peppercarrot.com/extras/html/2019_bird-generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/)" +#~ msgid "" +#~ "{{% livechat_label avatar_set_option_bird %}}: [David Revoy's bird avatar " +#~ "generator](https://www.peppercarrot.com/extras/html/2019_bird-generator/) " +#~ "[CC-By](https://creativecommons.org/licenses/by/4.0/)" +#~ msgstr "" +#~ "{{% livechat_label avatar_set_option_bird %}}: [David Revoy's Vögel " +#~ "Avatargenerator](https://www.peppercarrot.com/extras/html/2019_bird-" +#~ "generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/)" -#~ msgid "![Birds](/peertube-plugin-livechat/images/avatar_bird.png?classes=shadow,border&height=40px) license" -#~ msgstr "![Vögel](/peertube-plugin-livechat/images/avatar_bird.png?classes=shadow,border&height=40px) Lizenz" +#~ msgid "" +#~ "![Birds](/peertube-plugin-livechat/images/avatar_bird.png?classes=shadow," +#~ "border&height=40px) license" +#~ msgstr "" +#~ "![Vögel](/peertube-plugin-livechat/images/avatar_bird.png?classes=shadow," +#~ "border&height=40px) Lizenz" -#~ msgid "{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's fenec/mobilizon avatar generator](https://www.peppercarrot.com/extras/html/2020_mobilizon-generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/)" -#~ msgstr "{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's Fenec/Mobilizon Avatargenerator](https://www.peppercarrot.com/extras/html/2020_mobilizon-generator/) [CC-By](https://creativecommons.org/licenses/by/4.0/)" +#~ msgid "" +#~ "{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's fenec/" +#~ "mobilizon avatar generator](https://www.peppercarrot.com/extras/" +#~ "html/2020_mobilizon-generator/) [CC-By](https://creativecommons.org/" +#~ "licenses/by/4.0/)" +#~ msgstr "" +#~ "{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's Fenec/" +#~ "Mobilizon Avatargenerator](https://www.peppercarrot.com/extras/" +#~ "html/2020_mobilizon-generator/) [CC-By](https://creativecommons.org/" +#~ "licenses/by/4.0/)" -#~ msgid "![Fenecs](/peertube-plugin-livechat/images/avatar_fenec.png?classes=shadow,border&height=40px) license" -#~ msgstr "![Fenecs](/peertube-plugin-livechat/images/avatar_fenec.png?classes=shadow,border&height=40px) Lizenz" +#~ msgid "" +#~ "![Fenecs](/peertube-plugin-livechat/images/avatar_fenec.png?" +#~ "classes=shadow,border&height=40px) license" +#~ msgstr "" +#~ "![Fenecs](/peertube-plugin-livechat/images/avatar_fenec.png?" +#~ "classes=shadow,border&height=40px) Lizenz" -#~ msgid "Thanks to David Revoy for his work on Peertube's mascot, [Sepia](https://www.davidrevoy.com/index.php?tag/peertube). The character design is under CC-By licence, and the SVG files used to create some logo and avatars in this plugin are GPLv3.0." -#~ msgstr "Vielen Dank an David Revoy für seine Arbeit am Peertube-Maskottchen, [Sepia] (https://www.davidrevoy.com/index.php?tag/peertube). Das Charakterdesign steht unter CC-By-Lizenz, und die SVG-Dateien, die zur Erstellung einiger Logos und Avatare in diesem Plugin verwendet wurden, stehen unter GPLv3.0." +#~ msgid "" +#~ "Thanks to David Revoy for his work on Peertube's mascot, [Sepia](https://" +#~ "www.davidrevoy.com/index.php?tag/peertube). The character design is " +#~ "under CC-By licence, and the SVG files used to create some logo and " +#~ "avatars in this plugin are GPLv3.0." +#~ msgstr "" +#~ "Vielen Dank an David Revoy für seine Arbeit am Peertube-Maskottchen, " +#~ "[Sepia] (https://www.davidrevoy.com/index.php?tag/peertube). Das " +#~ "Charakterdesign steht unter CC-By-Lizenz, und die SVG-Dateien, die zur " +#~ "Erstellung einiger Logos und Avatare in diesem Plugin verwendet wurden, " +#~ "stehen unter GPLv3.0." #, fuzzy -#~ msgid "{{% livechat_label avatar_set_option_sepia %}}: ![Sepia](/peertube-plugin-livechat/images/avatar_sepia.png?classes=shadow,border&height=40px)" -#~ msgstr "![Livechat-Installation](/peertube-plugin-livechat/images/installation.png?classes=shadow,border&height=200px)" +#~ msgid "" +#~ "{{% livechat_label avatar_set_option_sepia %}}: ![Sepia](/peertube-plugin-" +#~ "livechat/images/avatar_sepia.png?classes=shadow,border&height=40px)" +#~ msgstr "" +#~ "![Livechat-Installation](/peertube-plugin-livechat/images/installation." +#~ "png?classes=shadow,border&height=200px)" #, no-wrap #~ msgid "Pre-recorded messages" #~ msgstr "Aufgezeichnete Nachrichten" -#~ msgid "The plugin needs to build an AppImage for the Prosody XMPP server. It appears that the way this AppImage is build requires `apt` and `dpkg` commands. So it will only work \"out of the box\" on Debian-like systems. If you are using another Linux distribution, you can try to install `apt` and `dpkg` manually. See for example this [Github issue](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues/200). We will provide another solution as soon as possible." -#~ msgstr "Das Plugin muss ein AppImage für den Prosody XMPP-Server erstellen. Es scheint, dass die Art und Weise, wie dieses AppImage erstellt wird, `apt`- und `dpkg`-Befehle erfordert. Daher wird es nur auf Debian-ähnlichen Systemen funktionieren. Wenn Sie eine andere Linux-Distribution verwenden, können Sie versuchen, `apt` und `dpkg` manuell zu installieren. Siehe zum Beispiel dieses [Github issue] (https://github.com/JohnXLivingston/peertube-plugin-livechat/issues/200). Wir werden so bald wie möglich eine andere Lösung anbieten." +#~ msgid "" +#~ "The plugin needs to build an AppImage for the Prosody XMPP server. It " +#~ "appears that the way this AppImage is build requires `apt` and `dpkg` " +#~ "commands. So it will only work \"out of the box\" on Debian-like " +#~ "systems. If you are using another Linux distribution, you can try to " +#~ "install `apt` and `dpkg` manually. See for example this [Github issue]" +#~ "(https://github.com/JohnXLivingston/peertube-plugin-livechat/" +#~ "issues/200). We will provide another solution as soon as possible." +#~ msgstr "" +#~ "Das Plugin muss ein AppImage für den Prosody XMPP-Server erstellen. Es " +#~ "scheint, dass die Art und Weise, wie dieses AppImage erstellt wird, " +#~ "`apt`- und `dpkg`-Befehle erfordert. Daher wird es nur auf Debian-" +#~ "ähnlichen Systemen funktionieren. Wenn Sie eine andere Linux-" +#~ "Distribution verwenden, können Sie versuchen, `apt` und `dpkg` manuell zu " +#~ "installieren. Siehe zum Beispiel dieses [Github issue] (https://github." +#~ "com/JohnXLivingston/peertube-plugin-livechat/issues/200). Wir werden so " +#~ "bald wie möglich eine andere Lösung anbieten." #~ msgid "Building this AppImage also requires following packages:" -#~ msgstr "Für die Erstellung dieses AppImage sind außerdem folgende Pakete erforderlich:" +#~ msgstr "" +#~ "Für die Erstellung dieses AppImage sind außerdem folgende Pakete " +#~ "erforderlich:" #~ msgid "`python3-venv`" #~ msgstr "`python3-venv`" @@ -5336,22 +8634,41 @@ msgstr "Wenn Sie ein Webdesigner oder ein ConverseJS/Prosody/XMPP-Experte sind u #~ msgid "`squashfs-tools`" #~ msgstr "`squashfs-tools`" -#~ msgid "These dependencies were tested on a Debian Bullseye. If there is some dependencies issues on your UNIX/Linux system, please open an issue on Github." -#~ msgstr "Diese Abhängigkeiten wurden auf dem Betriebssystem Debian Bullseye getestet. Wenn es Probleme mit den Abhängigkeiten auf Ihrem UNIX/Linux-System gibt, öffnen Sie bitte einen Eintrag auf Github." +#~ msgid "" +#~ "These dependencies were tested on a Debian Bullseye. If there is some " +#~ "dependencies issues on your UNIX/Linux system, please open an issue on " +#~ "Github." +#~ msgstr "" +#~ "Diese Abhängigkeiten wurden auf dem Betriebssystem Debian Bullseye " +#~ "getestet. Wenn es Probleme mit den Abhängigkeiten auf Ihrem UNIX/Linux-" +#~ "System gibt, öffnen Sie bitte einen Eintrag auf Github." #, fuzzy -#~ msgid "| | | |---|---| | ![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px) | ![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px) |" +#~ msgid "" +#~ "| | | |---|---| | ![Chat screenshot](/peertube-plugin-livechat/images/" +#~ "chat.png?classes=shadow,border&height=200px) | ![Fullscreen chat " +#~ "screenshot](/peertube-plugin-livechat/images/fullscreen.png?" +#~ "classes=shadow,border&height=200px) |" #~ msgstr "" #~ "| | |\n" #~ "|---|---|\n" -#~ "| ![Chat screenshot](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px) | ![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px) |\n" +#~ "| ![Chat screenshot](/peertube-plugin-livechat/images/chat.png?" +#~ "classes=shadow,border&height=200px) | ![Fullscreen chat screenshot](/" +#~ "peertube-plugin-livechat/images/fullscreen.png?classes=shadow," +#~ "border&height=200px) |\n" #, fuzzy -#~ msgid "Avoid adding line breaks in middle of a sentence. But add a line break after each sentence in a paragraph. This is to facilitate the work for translators: so then can easily check that they don't miss a sentence when translating a parapraph." +#~ msgid "" +#~ "Avoid adding line breaks in middle of a sentence. But add a line break " +#~ "after each sentence in a paragraph. This is to facilitate the work for " +#~ "translators: so then can easily check that they don't miss a sentence " +#~ "when translating a parapraph." #~ msgstr "" #~ "Vermeiden Sie Zeilenumbrüche in der Mitte eines Satzes.\n" #~ "Fügen Sie jedoch nach jedem Satz eines Absatzes einen Zeilenumbruch ein.\n" -#~ "Dies soll den Übersetzern die Arbeit erleichtern: So können sie leicht überprüfen, dass sie beim Übersetzen eines Absatzes keinen Satz übersehen.\n" +#~ "Dies soll den Übersetzern die Arbeit erleichtern: So können sie leicht " +#~ "überprüfen, dass sie beim Übersetzen eines Absatzes keinen Satz " +#~ "übersehen.\n" #, no-wrap #~ msgid "you must have `npm` installed\n" diff --git a/support/documentation/po/livechat.el.po b/support/documentation/po/livechat.el.po index ba915eb9..7d1ac66a 100644 --- a/support/documentation/po/livechat.el.po +++ b/support/documentation/po/livechat.el.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Greek \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.en.pot b/support/documentation/po/livechat.en.pot index ef5404c2..0284f45d 100644 --- a/support/documentation/po/livechat.en.pot +++ b/support/documentation/po/livechat.en.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -658,7 +658,13 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md #, markdown-text -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +#, markdown-text +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -2107,14 +2113,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2942,13 +2940,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -3041,6 +3032,78 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, markdown-text +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3447,6 +3510,32 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, markdown-text, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, markdown-text +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3471,6 +3560,24 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, markdown-text +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3621,6 +3728,48 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, markdown-text +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, markdown-text +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, markdown-text +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, markdown-text +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, markdown-text +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3645,12 +3794,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3809,14 +3952,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md #, markdown-text @@ -4266,7 +4401,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -4473,12 +4608,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md #, markdown-text @@ -4582,12 +4711,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md #, markdown-text @@ -4828,12 +4951,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, markdown-text, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md #, markdown-text @@ -5010,12 +5127,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md #, markdown-text diff --git a/support/documentation/po/livechat.eo.po b/support/documentation/po/livechat.eo.po index 9a87a1a3..71fb5f21 100644 --- a/support/documentation/po/livechat.eo.po +++ b/support/documentation/po/livechat.eo.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Esperanto \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.es.po b/support/documentation/po/livechat.es.po index ffcc5a60..cfc2524c 100644 --- a/support/documentation/po/livechat.es.po +++ b/support/documentation/po/livechat.es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2024-04-16 21:38+0000\n" "Last-Translator: rnek0 \n" "Language-Team: Spanish \n" @@ -612,9 +612,16 @@ msgstr "Por ahora, no es posible utilizar tablas Markdown: las herramientas de t #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +#, fuzzy +#| msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." msgstr "Puede haber enlaces a documentación en otros lugares de la web. Intenta no cambiar las urls de las páginas de documentación. O, al menos, pon enlaces que apunten hacia la nueva ubicación de la url anterior." +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1908,13 +1915,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2652,12 +2652,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2736,6 +2730,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3091,6 +3147,32 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, fuzzy, no-wrap +#| msgid "General information" +msgid "Configuration" +msgstr "Información general" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3113,6 +3195,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, fuzzy, no-wrap @@ -3248,6 +3347,44 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy, no-wrap +#| msgid "Write documentation" +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "Redactar la documentación" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3272,11 +3409,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3417,13 +3549,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3814,7 +3939,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3993,11 +4118,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4088,11 +4208,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4304,13 +4419,6 @@ msgstr "Información general" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, fuzzy, no-wrap -#| msgid "General information" -msgid "Configuration" -msgstr "Información general" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4465,11 +4573,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.eu.po b/support/documentation/po/livechat.eu.po index 0badddc2..9655395b 100644 --- a/support/documentation/po/livechat.eu.po +++ b/support/documentation/po/livechat.eu.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Basque \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.fa.po b/support/documentation/po/livechat.fa.po index b33a3d09..e0a23ffb 100644 --- a/support/documentation/po/livechat.fa.po +++ b/support/documentation/po/livechat.fa.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Persian \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.fi.po b/support/documentation/po/livechat.fi.po index 4513f1df..74b423e4 100644 --- a/support/documentation/po/livechat.fi.po +++ b/support/documentation/po/livechat.fi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Finnish \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.fr.po b/support/documentation/po/livechat.fr.po index 6da21db5..96874db6 100644 --- a/support/documentation/po/livechat.fr.po +++ b/support/documentation/po/livechat.fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2024-08-12 11:25+0000\n" "Last-Translator: John Livingston \n" "Language-Team: French \n" @@ -612,9 +612,16 @@ msgstr "Pour l'instant il n'est pas possible d'utiliser des tableaux Markdown  #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +#, fuzzy +#| msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." msgstr "Il peut y avoir des liens vers la documentation ailleurs sur le web. Essayez de ne pas changer les urls des pages de documentation. Ou au moins, mettez des liens vers les nouvelles pages dans les anciennes urls." +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" +msgstr "" + #. type: Title ### #: support/documentation/content/en/contributing/document/_index.md #, no-wrap @@ -1962,13 +1969,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "Cette fonctionnalité arrive avec le plugin livechat version 11.0.0." - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2740,12 +2740,6 @@ msgstr "Remarque : vous pouvez personnaliser les couleurs. Ce n'est pas encore d msgid "OBS Dock" msgstr "Dock OBS" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.1.0." - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2828,6 +2822,70 @@ msgstr "Mélanger plusieurs tchats dans votre flux en direct" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "Vous pouvez utiliser l'extension [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) pour mélanger plusieurs sources de tchat (Peertube, Twitch, Youtube, Facebook, ...) et inclure leurs contenus dans votre flux en direct. La compatibilité avec ce plugin a été ajoutée dans les versions récentes." +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, fuzzy +#| msgid "If there is no user in the chatroom, the bot won't send any message." +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "S'il n'y a pas d'utilisateur⋅rice dans le salon, le bot n'enverra pas de message." + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3201,6 +3259,34 @@ msgstr "Une fois ici, vous pouvez activer le bot, et configurer quelques options msgid "The bot will reload instantly when you save the page." msgstr "Le bot recharge automatiquement ses options quand vous sauvegardez la page." +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, fuzzy, no-wrap +#| msgid "The bot can automatically moderate messages containing forbidden words." +msgid "The bot can automatically moderate duplicate messages." +msgstr "Le bot peut automatiquement modérer les messages contenant des mots interdits." + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "Configuration" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, fuzzy +#| msgid "![Timers configuration](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px)" +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "![Configuration des messages pré-enregistrés](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px)" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3225,6 +3311,26 @@ msgstr "S'il n'y a pas d'utilisateur⋅rice dans le salon, le bot n'enverra pas msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "![Configuration des messages pré-enregistrés](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px)" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, fuzzy, no-wrap +#| msgid "The bot can automatically moderate messages containing forbidden words." +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "Le bot peut automatiquement modérer les messages contenant des mots interdits." + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, fuzzy +#| msgid "![Forbidden words configuration](/peertube-plugin-livechat/images/bot_forbidden_words.png?classes=shadow,border&height=400px)" +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "![Configuration des mots interdits](/peertube-plugin-livechat/images/bot_forbidden_words.png?classes=shadow,border&height=400px)" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3370,6 +3476,50 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "L'attribut `sn` est le code du nom court. L'attribut `url` peut être n'importe quelle url d'image à laquelle votre navigateur peut accéder, ou une [URL de données](https://developer.mozilla.org/fr-FR/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) représentant le fichier que vous souhaitez importer." +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy, no-wrap +#| msgid "Plugin peertube-plugin-livechat slow mode" +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "Mode lent du plugin peertube-plugin-livechat" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy +#| msgid "This can be really usefull to:" +msgid "This mode can be usefull for example:" +msgstr "Cela peut s'avérer très utile pour :" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy +#| msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label livechat_configuration_channel_anonymize_moderation_label %}}\" checkbox." +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "Pour activer ou désactiver cette fonctionnalité, utilisez le [menu déroulant du chat](/peertube-plugin-livechat/fr/documentation/user/viewers), puis ouvrez le menu \"configurer\". Dans le formulaire, vous trouverez une case à cocher \"{{% livechat_label livechat_configuration_channel_anonymize_moderation_label %}}\"." + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy +#| msgid "On the [channel configuration page](/peertube-plugin-livechat/documentation/user/streamers/channel), you can set the \"{{% livechat_label moderation_delay %}}\" option:" +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "Sur la [page de configuration de la chaîne](/peertube-plugin-livechat/fr/documentation/user/streamers/channel), vous pouvez définir une valeur pour l'option \"{{% livechat_label moderation_delay %}}\" :" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3394,11 +3544,6 @@ msgstr "Plugin peertube-plugin-livechat délai de modération" msgid "Moderation delay" msgstr "Délai de modération" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.3.0." - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3545,13 +3690,6 @@ msgstr "Depuis la version 10.0.0 de livechat, les administrateur⋅rices et mod msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "Vous pouvez utiliser les [commandes de modération ConverseJS](https://conversejs.org/docs/html/features.html#moderating-chatrooms) pour modérer le salon. Lorsque vous ouvrez la salle de discussion en plein écran, un menu avec des commandes dédiées s'affiche en haut à droite." -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.2.0." - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3972,8 +4110,9 @@ msgstr "Vous pouvez trier les tâches ou les déplacer d'une liste à l'autre pa #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md -#, no-wrap -msgid "You can create polls to ask viewers their opinion." +#, fuzzy, no-wrap +#| msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "Vous pouvez créer des sondages pour demander l'avis des spectateur⋅rices." #. type: Yaml Front Matter Hash Value: title @@ -4154,11 +4293,6 @@ msgstr "Mode lent du plugin peertube-plugin-livechat" msgid "Slow mode" msgstr "Mode lent" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "Cette fonctionnalité arrive avec le plugin livechat version 8.3.0." - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4251,11 +4385,6 @@ msgstr "Vous pouvez gérer les tâches et les listes de tâches avec votre équi msgid "Tasks / To-do lists" msgstr "Tâches / listes de choses à faire" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.0.0." - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4492,12 +4621,6 @@ msgstr "Configurer les conditions d'utilisation des tchats de la chaîne" msgid "Terms & conditions" msgstr "Conditions d'utilisation" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "Configuration" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4662,11 +4785,6 @@ msgstr "Si vous regardez un direct sur une instance où vous n'avez pas de compt msgid "If you have a Peertube account on another Peertube instance" msgstr "Si vous avez un compte Peertube sur une autre instance Peertube" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "Cette fonctionnalité arrive avec le plugin livechat version 9.0.0." - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." @@ -5058,6 +5176,32 @@ msgstr "les [jalons sur github](https://github.com/JohnXLivingston/peertube-plug msgid "If you are a webdesigner or a ConverseJS/Prosody/XMPP expert, and want to help improve this plugin, you are welcome." msgstr "Si vous êtes webdesigner ou avez une expertise en ConverseJS/Prosody/XMPP et souhaitez participer à l'évolution de ce plugin, n'hésitez pas à me contacter." +#~ msgid "This feature comes with the livechat plugin version 11.0.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 11.0.0." + +#~ msgid "This feature comes with the livechat plugin version 10.1.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.1.0." + +#, fuzzy +#~| msgid "This feature comes with the livechat plugin version 11.0.0." +#~ msgid "This feature comes with the livechat plugin version 11.1.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 11.0.0." + +#~ msgid "This feature comes with the livechat plugin version 10.3.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.3.0." + +#~ msgid "This feature comes with the livechat plugin version 10.2.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.2.0." + +#~ msgid "This feature comes with the livechat plugin version 8.3.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 8.3.0." + +#~ msgid "This feature comes with the livechat plugin version 10.0.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 10.0.0." + +#~ msgid "This feature comes with the livechat plugin version 9.0.0." +#~ msgstr "Cette fonctionnalité arrive avec le plugin livechat version 9.0.0." + #~ msgid "![External login button](/peertube-plugin-livechat/images/external_login_button.png?classes=shadow,border&height=200px)" #~ msgstr "![Bouton connexion avec compte externe](/peertube-plugin-livechat/images/external_login_button.png?classes=shadow,border&height=200px)" diff --git a/support/documentation/po/livechat.gd.po b/support/documentation/po/livechat.gd.po index 327a51f0..d7d1cbcd 100644 --- a/support/documentation/po/livechat.gd.po +++ b/support/documentation/po/livechat.gd.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Gaelic \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.gl.po b/support/documentation/po/livechat.gl.po index a8dbfd4d..f3459729 100644 --- a/support/documentation/po/livechat.gl.po +++ b/support/documentation/po/livechat.gl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Galician \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.hr.po b/support/documentation/po/livechat.hr.po index 4c7acc7a..985608c4 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.po @@ -6,16 +6,18 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" -"PO-Revision-Date: 2024-07-19 17:45+0000\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" +"PO-Revision-Date: 2024-09-16 15:14+0000\n" "Last-Translator: Milo Ivir \n" -"Language-Team: Croatian \n" +"Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.6.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.7.2\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -583,7 +585,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1877,15 +1884,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -#, fuzzy -#| msgid "This feature comes with the livechat plugin version 10.0.0." -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.0.0." - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2643,12 +2641,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.1.0." - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2731,6 +2723,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3102,6 +3156,33 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "Bez duplih poruka" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "Konfiguracija" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, fuzzy +#| msgid "![Moderation delay timer](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border)" +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "![Timer odgode moderiranja](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border)" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3126,6 +3207,25 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "![Timer odgode moderiranja](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border)" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, fuzzy +#| msgid "![Moderation delay timer](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border)" +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "![Timer odgode moderiranja](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border)" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3261,6 +3361,46 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "Atribut `sn` je kod kratkog imena. Atribut `url` može biti bilo koji url slike kojem tvoj preglednik može pristupiti ili [URL podataka](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) koji predstavlja datoteku koju želiš uvesti." +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy, no-wrap +#| msgid "Plugin documentation" +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "Dokumentacija dodataka" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "„Samo emoji” modus" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy +#| msgid "On the [channel configuration page](/peertube-plugin-livechat/documentation/user/streamers/channel), you can set the \"{{% livechat_label moderation_delay %}}\" option:" +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "Na [stranici za konfiguraciju kanala](/peertube-plugin-livechat/hr/documentation/user/streamers/channel) možeš postaviti opciju „{{% livechat_label moderation_delay %}}”:" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3285,11 +3425,6 @@ msgstr "" msgid "Moderation delay" msgstr "Odgoda moderiranja" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.3.0." - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3434,13 +3569,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.2.0." - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3612,10 +3740,9 @@ msgstr "" #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -#, fuzzy, no-wrap -#| msgid "Moderation delay" +#, no-wrap msgid "Moderation notes" -msgstr "Odgoda moderiranja" +msgstr "Bilješke moderiranja" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3840,7 +3967,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -4021,11 +4148,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4118,11 +4240,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.0.0." - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4351,12 +4468,6 @@ msgstr "" msgid "Terms & conditions" msgstr "Uvjeti i odredbe" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "Konfiguracija" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4515,11 +4626,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." @@ -4904,6 +5010,28 @@ msgstr "" msgid "If you are a webdesigner or a ConverseJS/Prosody/XMPP expert, and want to help improve this plugin, you are welcome." msgstr "" +#, fuzzy +#~| msgid "This feature comes with the livechat plugin version 10.0.0." +#~ msgid "This feature comes with the livechat plugin version 11.0.0." +#~ msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.0.0." + +#~ msgid "This feature comes with the livechat plugin version 10.1.0." +#~ msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.1.0." + +#, fuzzy +#~| msgid "This feature comes with the livechat plugin version 10.0.0." +#~ msgid "This feature comes with the livechat plugin version 11.1.0." +#~ msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.0.0." + +#~ msgid "This feature comes with the livechat plugin version 10.3.0." +#~ msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.3.0." + +#~ msgid "This feature comes with the livechat plugin version 10.2.0." +#~ msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.2.0." + +#~ msgid "This feature comes with the livechat plugin version 10.0.0." +#~ msgstr "Ova je funkcija dostupna s dodatkom za chat uživo verzije 10.0.0." + #, fuzzy #~| msgid "![Moderation delay timer](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border)" #~ msgid "![Moderator Notes Application](/peertube-plugin-livechat/images/moderator_notes_app_video_1.png?classes=shadow,border&height=200px)" diff --git a/support/documentation/po/livechat.hu.po b/support/documentation/po/livechat.hu.po index f48fbde5..34bee9cd 100644 --- a/support/documentation/po/livechat.hu.po +++ b/support/documentation/po/livechat.hu.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Hungarian \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.is.po b/support/documentation/po/livechat.is.po index e86f7dad..29124fcc 100644 --- a/support/documentation/po/livechat.is.po +++ b/support/documentation/po/livechat.is.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Icelandic \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.it.po b/support/documentation/po/livechat.it.po index 224de848..1a45006f 100644 --- a/support/documentation/po/livechat.it.po +++ b/support/documentation/po/livechat.it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 14:21+0000\n" "Last-Translator: John Livingston \n" "Language-Team: Italian \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.ja.po b/support/documentation/po/livechat.ja.po index 40006ba1..49af0449 100644 --- a/support/documentation/po/livechat.ja.po +++ b/support/documentation/po/livechat.ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2024-08-29 10:38+0000\n" "Last-Translator: \"T.S\" \n" "Language-Team: Japanese \n" @@ -603,7 +603,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1909,13 +1914,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2678,12 +2676,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2766,6 +2758,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3144,6 +3198,33 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, fuzzy, no-wrap +msgid "Configuration" +msgstr "ドキュメンテーション" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3168,6 +3249,25 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, fuzzy +#| msgid "![Fullscreen chat screenshot](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px)" +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "![チャット画面のスクリーンショット](/peertube-plugin-livechat/images/chat.png?classes=shadow,border&height=200px)" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3313,6 +3413,45 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "PeerTube ライブチャットプラグイン" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "PeerTube ライブチャットプラグイン" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, fuzzy +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "PeerTube ライブチャットプラグイン" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3337,11 +3476,6 @@ msgstr "PeerTube ライブチャットプラグイン" msgid "Moderation delay" msgstr "ドキュメンテーション" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3489,13 +3623,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3899,7 +4026,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -4081,11 +4208,6 @@ msgstr "PeerTube ライブチャットプラグイン" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4179,11 +4301,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4420,12 +4537,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, fuzzy, no-wrap -msgid "Configuration" -msgstr "ドキュメンテーション" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4591,11 +4702,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.kab.po b/support/documentation/po/livechat.kab.po index cd9289f0..4c9325b7 100644 --- a/support/documentation/po/livechat.kab.po +++ b/support/documentation/po/livechat.kab.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kabyle \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.nb.po b/support/documentation/po/livechat.nb.po index 2496527e..c67a1f4d 100644 --- a/support/documentation/po/livechat.nb.po +++ b/support/documentation/po/livechat.nb.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Bokmål \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.nl.po b/support/documentation/po/livechat.nl.po index 9bc98c52..f0288977 100644 --- a/support/documentation/po/livechat.nl.po +++ b/support/documentation/po/livechat.nl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Dutch \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.nn.po b/support/documentation/po/livechat.nn.po index bb40b6ba..9c4aad73 100644 --- a/support/documentation/po/livechat.nn.po +++ b/support/documentation/po/livechat.nn.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Nynorsk \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.oc.po b/support/documentation/po/livechat.oc.po index 841c32f4..cbb1956a 100644 --- a/support/documentation/po/livechat.oc.po +++ b/support/documentation/po/livechat.oc.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Occitan \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.pl.po b/support/documentation/po/livechat.pl.po index fe4b81c8..e5ac8bed 100644 --- a/support/documentation/po/livechat.pl.po +++ b/support/documentation/po/livechat.pl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Polish \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.pt.po b/support/documentation/po/livechat.pt.po index b99e24fd..36f8fb35 100644 --- a/support/documentation/po/livechat.pt.po +++ b/support/documentation/po/livechat.pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Portuguese \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.ru.po b/support/documentation/po/livechat.ru.po index e0d92b06..868d18c5 100644 --- a/support/documentation/po/livechat.ru.po +++ b/support/documentation/po/livechat.ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Russian \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.sq.po b/support/documentation/po/livechat.sq.po index d203d36e..6e5dc38f 100644 --- a/support/documentation/po/livechat.sq.po +++ b/support/documentation/po/livechat.sq.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Albanian \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.sv.po b/support/documentation/po/livechat.sv.po index dcaa41ea..9d90f235 100644 --- a/support/documentation/po/livechat.sv.po +++ b/support/documentation/po/livechat.sv.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Swedish \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.th.po b/support/documentation/po/livechat.th.po index 664022c0..bdc3be68 100644 --- a/support/documentation/po/livechat.th.po +++ b/support/documentation/po/livechat.th.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Thai \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.tok.po b/support/documentation/po/livechat.tok.po index 74e30ddc..5d46b6ea 100644 --- a/support/documentation/po/livechat.tok.po +++ b/support/documentation/po/livechat.tok.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Toki Pona \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.tr.po b/support/documentation/po/livechat.tr.po index 8debc62b..9e15b447 100644 --- a/support/documentation/po/livechat.tr.po +++ b/support/documentation/po/livechat.tr.po @@ -564,7 +564,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1854,13 +1859,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2594,12 +2592,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2678,6 +2670,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3033,6 +3087,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3055,6 +3134,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3188,6 +3284,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3212,11 +3345,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3357,13 +3485,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3754,7 +3875,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3933,11 +4054,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4028,11 +4144,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4243,12 +4354,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4403,11 +4508,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.uk.po b/support/documentation/po/livechat.uk.po index f5bfabad..04cbc485 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.po @@ -6,28 +6,30 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" -"PO-Revision-Date: 2023-07-17 10:53+0000\n" -"Last-Translator: Anonymous \n" -"Language-Team: Ukrainian \n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" +"PO-Revision-Date: 2024-10-13 09:25+0000\n" +"Last-Translator: Ihor Hordiichuk \n" +"Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.18.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.7.2\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md #, no-wrap msgid "Contact the author" -msgstr "" +msgstr "Зв'язатися з автором" #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/contact/_index.md #, no-wrap msgid "Contact me" -msgstr "" +msgstr "Зв'язатися зі мною" #. type: Plain text #: support/documentation/content/en/contact/_index.md @@ -583,7 +585,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1880,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2613,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2691,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3108,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3155,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3305,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3366,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3506,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3896,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4075,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4165,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4375,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4529,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.vi.po b/support/documentation/po/livechat.vi.po index 1c2d7aac..69402937 100644 --- a/support/documentation/po/livechat.vi.po +++ b/support/documentation/po/livechat.vi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Vietnamese \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.zh-Hans.po b/support/documentation/po/livechat.zh-Hans.po index 9225f457..901a4eb1 100644 --- a/support/documentation/po/livechat.zh-Hans.po +++ b/support/documentation/po/livechat.zh-Hans.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Simplified) \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance." diff --git a/support/documentation/po/livechat.zh-Hant.po b/support/documentation/po/livechat.zh-Hant.po index 2b382b82..065dd542 100644 --- a/support/documentation/po/livechat.zh-Hant.po +++ b/support/documentation/po/livechat.zh-Hant.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Traditional) \n" @@ -583,7 +583,12 @@ msgstr "" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "There may be links to documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgid "There may be links to this documentation elsewhere on the web. Try not to change the urls of the documentation pages. Or at the very least, put links to the new location on the previous url." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +msgid "When a new feature is released, you can use the `livechat_version_notice` short code to display an infobox with the version with which the features is available. This short code takes the version number as parameter. Here is an example:" msgstr "" #. type: Title ### @@ -1873,13 +1878,6 @@ msgstr "" msgid "Prosody mod_firewall" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/admin/mod_firewall.md -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/moderation_notes.md -msgid "This feature comes with the livechat plugin version 11.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md #: build/documentation/pot_in/documentation/admin/settings.md @@ -2613,12 +2611,6 @@ msgstr "" msgid "OBS Dock" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/obs.md -#: build/documentation/pot_in/documentation/user/streamers/emojis.md -msgid "This feature comes with the livechat plugin version 10.1.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md #: support/documentation/content/en/documentation/user/viewers.md @@ -2697,6 +2689,68 @@ msgstr "" msgid "You can use the [social_stream browser extension](https://github.com/steveseguin/social_stream#readme) to mix multiple chat source (from Peertube, Twitch, Youtube, Facebook, ...) and include their contents in your live stream. The compatibility with this plugin was added in recent versions." msgstr "" +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Room owners and administrators can send special announcements in the chat." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: support/documentation/content/en/documentation/user/streamers/announcements.md +#, no-wrap +msgid "Announcements" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "These messages will be more visible than standard messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "To send announcements, owners and administrators will have a \"{{% livechat_label announcements_message_type %}}\" selector on the top of the message field:" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "![Screenshot of a chat session. On top of the message field, there is a \"{{% livechat_label announcements_message_type %}}\" selector. In the chat, we can see three types of announcements: a highlighted message, an announcement, and a warning. Each of these announcements have a special color to distinguish them. The announcement and the warning have also bold titles.](/peertube-plugin-livechat/images/announcements.png?classes=shadow,border&height=400px \"Announcements\")" +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "There are several message types:" +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_highlight %}}**: these messages will simply be highlighted in a blue box." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_announcement %}}**: these messages will be in a green box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Bullet: '* ' +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "**{{% livechat_label announcements_message_type_warning %}}**: these messages will be in a rend box, and a bold \"{{% livechat_label announcements_message_type_announcement %}}\" title will be added." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "User that are not owner or administrator of the chatroom can't send such messages." +msgstr "" + +#. type: Plain text +#: support/documentation/content/en/documentation/user/streamers/announcements.md +msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/basics.md #, no-wrap @@ -3052,6 +3106,31 @@ msgstr "" msgid "The bot will reload instantly when you save the page." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "The bot can automatically moderate duplicate messages." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, no-wrap +msgid "No duplicate message" +msgstr "" + +#. type: Title ## +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: support/documentation/content/en/documentation/user/streamers/terms.md +#, no-wrap +msgid "Configuration" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"No duplicate message\" option.](/peertube-plugin-livechat/images/bot_no_duplicate.png?classes=shadow,border&height=400px \"No duplicate message configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/bot/quotes.md #, no-wrap @@ -3074,6 +3153,23 @@ msgstr "" msgid "![Screenshot of the channel options page, with some fields to configure a new timer.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timers configuration\")" msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "The bot can automatically moderate messages containing too many special characters." +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#, no-wrap +msgid "Special characters" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the \"Forbid special characters\" option.](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3207,6 +3303,43 @@ msgstr "" msgid "The `sn` attribute is the short name code. The `url` attribute can be any image url than your browser can access, or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) representing the file you want to import." msgstr "" +#. type: Yaml Front Matter Hash Value: description +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "" + +#. type: Yaml Front Matter Hash Value: title +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, no-wrap +msgid "Emojis only mode" +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This mode can be usefull for example:" +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To avoid spam or offensive message when you are not here to moderate." +msgstr "" + +#. type: Bullet: '* ' +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "When there are too many speaking participants, and you can't no more moderate correctly." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "To enable or disable this feature, use the [chat dropdown menu](/peertube-plugin-livechat/documentation/user/viewers), open the \"configure\" menu. In the form, you will find a \"{{% livechat_label emoji_only_mode_title %}}\" checkbox." +msgstr "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "If you want to enable it for all your chatrooms at once, open the [channel emojis configuration page](/peertube-plugin-livechat/documentation/user/streamers/emojis/), and use the \"{{% livechat_label emoji_only_enable_all_rooms %}}\" button." +msgstr "" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3231,11 +3364,6 @@ msgstr "" msgid "Moderation delay" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/moderation_delay.md -msgid "This feature comes with the livechat plugin version 10.3.0." -msgstr "" - #. type: Yaml Front Matter Hash Value: title #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3376,13 +3504,6 @@ msgstr "" msgid "You can use [ConverseJS moderation commands](https://conversejs.org/docs/html/features.html#moderating-chatrooms) to moderate the room. When you open the chat room in full screen, there will also be a menu with dedicated commands on the top right." msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/moderation.md -#: support/documentation/content/en/documentation/user/streamers/polls.md -#: support/documentation/content/en/documentation/user/streamers/terms.md -msgid "This feature comes with the livechat plugin version 10.2.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md msgid "You can prevent anonymous users to send messages. In such case, only registered users will be able to talk in the chat." @@ -3773,7 +3894,7 @@ msgstr "" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/polls.md #, no-wrap -msgid "You can create polls to ask viewers their opinion." +msgid "You can create polls to ask viewers their opinion" msgstr "" #. type: Yaml Front Matter Hash Value: title @@ -3952,11 +4073,6 @@ msgstr "" msgid "Slow mode" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/slow_mode.md -msgid "This feature comes with the livechat plugin version 8.3.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md msgid "As a streamer, you can choose to rate limit your viewers messages in the chat." @@ -4047,11 +4163,6 @@ msgstr "" msgid "Tasks / To-do lists" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/streamers/tasks.md -msgid "This feature comes with the livechat plugin version 10.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md msgid "The livechat plugin includes a Task Application: a kind of \"to-do list\" feature where you can create task lists and add tasks to them. Every room's admins have access to these tasks, so you can edit them collaboratively." @@ -4262,12 +4373,6 @@ msgstr "" msgid "Terms & conditions" msgstr "" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md msgid "You can add terms & conditions to your channel. These terms will be shown to all users joining the chat." @@ -4422,11 +4527,6 @@ msgstr "" msgid "If you have a Peertube account on another Peertube instance" msgstr "" -#. type: Plain text -#: support/documentation/content/en/documentation/user/viewers.md -msgid "This feature comes with the livechat plugin version 9.0.0." -msgstr "" - #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md msgid "If you have a Peertube account, but not on the current instance, there is a \"{{% livechat_label login_using_external_account %}}\" button. This button will open a dialog where you can enter your Peertube instance URL. Once you entered it, it will check if the livechat plugin is available on the remote instance, and if the video is available. If it is the case, you will be redirected to the video on the remote instance."