From 1a75b30c50797f8ad0d83f13df6cffdb397e01c1 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 5 Sep 2024 18:28:54 +0200 Subject: [PATCH 001/120] Emoji only mode WIP --- CHANGELOG.md | 6 + build-prosody.sh | 6 +- conversejs/build-conversejs.sh | 4 + conversejs/custom/index.js | 1 + .../custom/shared/styles/_peertubetheme.scss | 8 ++ .../custom/templates/muc-bottom-panel.js | 15 ++ conversejs/lib/plugins/livechat-specific.ts | 2 + .../livechat-specific/muc-bottom-panel.ts | 23 +++ conversejs/loc.keys.js | 3 +- languages/en.yml | 2 + ...mod_http_peertubelivechat_manage_rooms.lua | 13 ++ .../mod_muc_http_defaults.lua | 9 ++ .../README.markdown | 14 ++ ..._muc_peertubelivechat_restrict_message.lua | 131 ++++++++++++++++++ server/lib/configuration/channel/init.ts | 1 + server/lib/emojis/emojis.ts | 111 ++++++++++++++- server/lib/prosody/api/manage-rooms.ts | 8 ++ server/lib/prosody/config/content.ts | 2 + server/lib/routers/api/configuration.ts | 16 +++ server/lib/routers/api/room.ts | 6 + 20 files changed, 375 insertions(+), 6 deletions(-) create mode 100644 conversejs/lib/plugins/livechat-specific/muc-bottom-panel.ts create mode 100644 prosody-modules/mod_muc_peertubelivechat_restrict_message/README.markdown create mode 100644 prosody-modules/mod_muc_peertubelivechat_restrict_message/mod_muc_peertubelivechat_restrict_message.lua diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e08072f..665ee9b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 11.1.0 (Not Released Yet) + +### New features + +* #131: Emoji only mode. + ## 11.0.1 ### Minor changes and fixes diff --git a/build-prosody.sh b/build-prosody.sh index 301efd70..c98cc2e8 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-2' x86_64_filename='prosody-x86_64.AppImage' -x86_64_sha256sum='f4af9bfefa2f804ad7e8b03a68f04194abb801f070ae620b3d4bcedb144e8523' +x86_64_sha256sum='664d9f3b1ea6dc5fdbe29ef8e8b4c0655abdff697e8c94bfecc894ef2c2fea08' aarch64_filename='prosody-aarch64.AppImage' -aarch64_sha256sum='878c5be719e1e36a84d637fd2bd44e3059aa91ddb6906ad05f1dd0334078df09' +aarch64_sha256sum='9911c0d581a92a817e9795a7944773a07e85151127233a2e551eb07dc4c44fb5' download_dir="$(pwd)/vendor/prosody-appimage" dist_dir="$(pwd)/dist/server/prosody" diff --git a/conversejs/build-conversejs.sh b/conversejs/build-conversejs.sh index c1078d16..a1f105f6 100644 --- a/conversejs/build-conversejs.sh +++ b/conversejs/build-conversejs.sh @@ -40,6 +40,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 +120,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/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/shared/styles/_peertubetheme.scss b/conversejs/custom/shared/styles/_peertubetheme.scss index 6ac3f33d..43bff78e 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); diff --git a/conversejs/custom/templates/muc-bottom-panel.js b/conversejs/custom/templates/muc-bottom-panel.js index 91b12bb4..b1648b09 100644 --- a/conversejs/custom/templates/muc-bottom-panel.js +++ b/conversejs/custom/templates/muc-bottom-panel.js @@ -83,6 +83,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 +159,7 @@ export default (o) => { return html` ${tplViewerMode(o)} ${tplSlowMode(o)} + ${tplEmojiOnly(o)} ${ mutedAnonymousMessage ? html`${mutedAnonymousMessage}` 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/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/loc.keys.js b/conversejs/loc.keys.js index ed3ebe95..997726db 100644 --- a/conversejs/loc.keys.js +++ b/conversejs/loc.keys.js @@ -62,7 +62,8 @@ const locKeys = [ 'moderator_note_original_nick', 'search_occupant_message', 'message_search', - 'message_search_original_nick' + 'message_search_original_nick', + 'emoji_only_info' ] module.exports = locKeys diff --git a/languages/en.yml b/languages/en.yml index 5f4bdd6e..04c3a539 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -636,3 +636,5 @@ 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. 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..e616e9a7 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_emoji_only_regexp = rawget(mod_muc_peertubelivechat_restrict_message, "set_peertubelivechat_emoji_only_regexp"); function check_auth(routes) local function check_request_auth(event) @@ -102,6 +105,16 @@ 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 + set_peertubelivechat_emoji_only_mode(room, config.livechat_emoji_only) + end + end + if type(config.livechat_emoji_only_regexp) == "string" then + if set_peertubelivechat_emoji_only_mode then + set_peertubelivechat_emoji_only_regexp(room, config.livechat_emoji_only_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..805dde14 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_emoji_only_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_emoji_only_regexp) == "string" and config.livechat_emoji_only_regexp ~= "") then + room._data.x_peertubelivechat_emoji_only_regexp = config.emoji_only_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_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..b54e94e6 --- /dev/null +++ b/prosody-modules/mod_muc_peertubelivechat_restrict_message/mod_muc_peertubelivechat_restrict_message.lua @@ -0,0 +1,131 @@ +-- 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_pcre2"; -- We are using PCRE2 (Perl Compatible Regular Expression) + +-- Plugin dependencies +local mod_muc = module:depends "muc"; +local muc_util = module:require "muc/util"; +local valid_roles = muc_util.valid_roles; + + +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_emoji_only_regexp(room) + return room._data.x_peertubelivechat_emoji_only_regexp; +end + +function set_peertubelivechat_emoji_only_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_emoji_only_regexp(room) == emoji_only_regexp then return false; end + room._data.x_peertubelivechat_emoji_only_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) and get_peertubelivechat_emoji_only_regexp(event.room) ~= nil then + event.reply:tag("feature", {var = "x_peertubelivechat_emoji_only_mode"}):up(); + end +end); + +module:hook("muc-config-form", function(event) + if (get_peertubelivechat_emoji_only_regexp(event.room) ~= nil) then + 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 +end, 121); + +module:hook("muc-config-submitted/muc#roomconfig_x_peertubelivechat_emoji_only_mode", function(event) + if get_peertubelivechat_emoji_only_regexp(event.room) ~= nil and 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_emoji_only_regexp(room); + if (r == nil) then + return; + end + room.x_peertubelivechat_emoji_only_compiled_regexp = rex.new(r, "i"); + 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/server/lib/configuration/channel/init.ts b/server/lib/configuration/channel/init.ts index 87788bd4..96bd1af4 100644 --- a/server/lib/configuration/channel/init.ts +++ b/server/lib/configuration/channel/init.ts @@ -120,6 +120,7 @@ async function initChannelConfiguration (options: RegisterServerOptions): Promis // but will be more efficient to add here, as we already tested hasChat). // Note: no need to await here, would only degrade performances. // FIXME: should also update livechat_muc_terms if channel has changed. + // FIXME: should also update livechat_emoji_only_regexp if channel has changed. updateProsodyRoom(options, video.uuid, { name: video.name }).then( diff --git a/server/lib/emojis/emojis.ts b/server/lib/emojis/emojis.ts index ccd08f24..da6ec9b5 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', @@ -138,9 +140,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 getChannelEmojisOnlyRegexp. if ((typeof sn !== 'string') || !/^:?[\w-]+:?$/.test(sn)) { this.logger.debug('Short name invalid: ' + (typeof sn === 'string' ? sn : '???')) return false @@ -390,6 +394,40 @@ export class Emojis { } } + /** + * Returns a string representing a regular expression (Perl Compatible RE) that can validate that a message + * contains only emojis (for this channel). + * This is used for the emoji only mode (test are made on the Prosody server). + * + * @param channelId channel id + */ + public async getChannelEmojisOnlyRegexp (channelId: number): Promise { + const parts = [...this.commonEmojisCodes] + if (await this.channelHasCustomEmojis(channelId)) { + const def = await this.channelCustomEmojisDefinition(channelId) + if (def) { + parts.push(...def.customEmojis.map(d => d.sn)) + } + } + + // Note: validShortName should ensure we won't put special chars. + // And for the common emojis, we assume that there is no special regexp chars (other that +, which will be escaped). + const regexp = '^\\s*(?:(?:' + parts.map((s) => s.replace(/[+]/g, '\\$&')).join('|') + ')\\s*)+\\s*$' + + // As a safety net, we check if it is a valid javascript regexp. + try { + const s = new RegExp(regexp) + if (!s) { + throw new Error('Can\'t create the RegExp from ' + regexp) + } + } catch (err) { + this.logger.error('Invalid Emoji Only regexp for channel ' + channelId.toString() + ': ' + regexp) + return undefined + } + + return regexp + } + /** * 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 +454,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 +473,68 @@ 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: {[key: string]: any} = JSON.parse( + await (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( + ...Object.values(block) + .map((d: any) => d.cp ? _convert(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 their respective characters. + * See ConverseJS emoji/utils.js for more info. + * @param {string} unicode + */ +function _convert (unicode: string): string { + if (unicode.includes('-')) { + const parts = [] + const s = unicode.split('-') + + for (let i = 0; i < s.length; i++) { + const part = parseInt(s[i], 16) + if (part >= 0x10000 && part <= 0x10FFFF) { + const hi = Math.floor((part - 0x10000) / 0x400) + 0xD800 + const lo = ((part - 0x10000) % 0x400) + 0xDC00 + parts.push(String.fromCharCode(hi) + String.fromCharCode(lo)) + } else { + parts.push(String.fromCharCode(part)) + } + } + return parts.join('') + } + return _fromCodePoint(unicode) +} + +function _fromCodePoint (codepoint: string): string { + let code = typeof codepoint === 'string' ? parseInt(codepoint, 16) : codepoint + if (code < 0x10000) { + return String.fromCharCode(code) + } + code -= 0x10000 + return String.fromCharCode( + 0xD800 + (code >> 10), + 0xDC00 + (code & 0x3FF) + ) +} diff --git a/server/lib/prosody/api/manage-rooms.ts b/server/lib/prosody/api/manage-rooms.ts index 064608d5..f1c5b28b 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_emoji_only_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_emoji_only_regexp' in data) { + apiData.livechat_emoji_only_regexp = data.livechat_emoji_only_regexp ?? '' + } if (('addAffiliations' in data) && data.addAffiliations !== undefined) { apiData.addAffiliations = data.addAffiliations } diff --git a/server/lib/prosody/config/content.ts b/server/lib/prosody/config/content.ts index 58e99c19..ce8a4f91 100644 --- a/server/lib/prosody/config/content.ts +++ b/server/lib/prosody/config/content.ts @@ -260,6 +260,8 @@ class ProsodyConfigContent { this.muc.set('anonymize_moderation_actions_form_position', 117) this.muc.add('modules_enabled', 'muc_mam_search') + + this.muc.add('modules_enabled', 'muc_peertubelivechat_restrict_message') } useAnonymous (autoBanIP: boolean): void { diff --git a/server/lib/routers/api/configuration.ts b/server/lib/routers/api/configuration.ts index 43e88be5..7038c4e2 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 @@ -168,6 +170,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 emojisOnlyRegexp = await emojis.getChannelEmojisOnlyRegexp(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_emoji_only_regexp: emojisOnlyRegexp + }).then( + () => {}, + (err) => logger.error(err) + ) + } + // Reloading data, to send them back to front: const channelEmojis = (await emojis.channelCustomEmojisDefinition(channelInfos.id)) ?? diff --git a/server/lib/routers/api/room.ts b/server/lib/routers/api/room.ts index a3efbad6..f0d922ca 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_emoji_only_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 emojiOnlyRegexp = await Emojis.singletonSafe()?.getChannelEmojisOnlyRegexp(channelId) + return { slow_mode_duration: channelOptions.slowMode.duration, mute_anonymous: channelOptions.mute.anonymous, + livechat_emoji_only_regexp: emojiOnlyRegexp, livechat_muc_terms: channelOptions.terms, moderation_delay: channelOptions.moderation.delay, anonymize_moderation_actions: channelOptions.moderation.anonymize From 5db4f4642107444401fa603ff85349111c1e6d76 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 5 Sep 2024 19:00:42 +0200 Subject: [PATCH 002/120] Emoji only mode WIP: Fix emojis regexp. The RCPE2 library can't handle long regexp, so we switch to Oniguruma. --- build-prosody.sh | 6 +-- ..._muc_peertubelivechat_restrict_message.lua | 5 ++- server/lib/emojis/emojis.ts | 45 ++++--------------- server/lib/prosody/api/manage-rooms.ts | 2 +- 4 files changed, 15 insertions(+), 43 deletions(-) diff --git a/build-prosody.sh b/build-prosody.sh index c98cc2e8..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.4-2' +wanted_release='v0.12.4-3' x86_64_filename='prosody-x86_64.AppImage' -x86_64_sha256sum='664d9f3b1ea6dc5fdbe29ef8e8b4c0655abdff697e8c94bfecc894ef2c2fea08' +x86_64_sha256sum='83a583ac7036387514bed17afab257dab4161ccdd0ab7453818c78b51f830357' aarch64_filename='prosody-aarch64.AppImage' -aarch64_sha256sum='9911c0d581a92a817e9795a7944773a07e85151127233a2e551eb07dc4c44fb5' +aarch64_sha256sum='7b7e6bf30d4498fc99a40022232c3065707ee4f4df24dc17947b007621634304' download_dir="$(pwd)/vendor/prosody-appimage" dist_dir="$(pwd)/dist/server/prosody" 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 index b54e94e6..1f8d2781 100644 --- 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 @@ -11,7 +11,8 @@ local st = require "util.stanza"; local jid_bare = require "util.jid".bare; -local rex = require "rex_pcre2"; -- We are using PCRE2 (Perl Compatible Regular Expression) +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"; @@ -87,7 +88,7 @@ function handle_groupchat(event) if (r == nil) then return; end - room.x_peertubelivechat_emoji_only_compiled_regexp = rex.new(r, "i"); + 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) diff --git a/server/lib/emojis/emojis.ts b/server/lib/emojis/emojis.ts index da6ec9b5..5d7232e4 100644 --- a/server/lib/emojis/emojis.ts +++ b/server/lib/emojis/emojis.ts @@ -403,6 +403,7 @@ export class Emojis { */ public async getChannelEmojisOnlyRegexp (channelId: number): Promise { const parts = [...this.commonEmojisCodes] + if (await this.channelHasCustomEmojis(channelId)) { const def = await this.channelCustomEmojisDefinition(channelId) if (def) { @@ -411,19 +412,8 @@ export class Emojis { } // Note: validShortName should ensure we won't put special chars. - // And for the common emojis, we assume that there is no special regexp chars (other that +, which will be escaped). - const regexp = '^\\s*(?:(?:' + parts.map((s) => s.replace(/[+]/g, '\\$&')).join('|') + ')\\s*)+\\s*$' - - // As a safety net, we check if it is a valid javascript regexp. - try { - const s = new RegExp(regexp) - if (!s) { - throw new Error('Can\'t create the RegExp from ' + regexp) - } - } catch (err) { - this.logger.error('Invalid Emoji Only regexp for channel ' + channelId.toString() + ': ' + regexp) - return undefined - } + // And for the common emojis, we assume that there is no special regexp chars + const regexp = '^\\s*(?:(?:' + parts.join('|') + ')\\s*)+\\s*$' return regexp } @@ -489,7 +479,7 @@ async function _getConverseEmojiCodes (options: RegisterServerOptions): Promise< if (key === 'custom') { continue } // These are not used. r.push( ...Object.values(block) - .map((d: any) => d.cp ? _convert(d.cp) : d.sn) + .map((d: any) => d.cp ? _emojiCpToRegexp(d.cp) : d.sn) .filter((sn: string) => sn && sn !== '') ) } @@ -503,38 +493,19 @@ async function _getConverseEmojiCodes (options: RegisterServerOptions): Promise< } /** - * Converts unicode code points and code pairs to their respective characters. + * Converts unicode code points and code pairs to the corresponding Regexp class. * See ConverseJS emoji/utils.js for more info. * @param {string} unicode */ -function _convert (unicode: string): string { +function _emojiCpToRegexp (unicode: string): string { if (unicode.includes('-')) { const parts = [] const s = unicode.split('-') for (let i = 0; i < s.length; i++) { - const part = parseInt(s[i], 16) - if (part >= 0x10000 && part <= 0x10FFFF) { - const hi = Math.floor((part - 0x10000) / 0x400) + 0xD800 - const lo = ((part - 0x10000) % 0x400) + 0xDC00 - parts.push(String.fromCharCode(hi) + String.fromCharCode(lo)) - } else { - parts.push(String.fromCharCode(part)) - } + parts.push('\\x{' + s[i] + '}') } return parts.join('') } - return _fromCodePoint(unicode) -} - -function _fromCodePoint (codepoint: string): string { - let code = typeof codepoint === 'string' ? parseInt(codepoint, 16) : codepoint - if (code < 0x10000) { - return String.fromCharCode(code) - } - code -= 0x10000 - return String.fromCharCode( - 0xD800 + (code >> 10), - 0xDC00 + (code & 0x3FF) - ) + return '\\x{' + unicode + '}' } diff --git a/server/lib/prosody/api/manage-rooms.ts b/server/lib/prosody/api/manage-rooms.ts index f1c5b28b..ec52563e 100644 --- a/server/lib/prosody/api/manage-rooms.ts +++ b/server/lib/prosody/api/manage-rooms.ts @@ -115,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: { From b115c28ee75d943fcf944ebff6b0c08c8fefa5f7 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 5 Sep 2024 19:22:58 +0200 Subject: [PATCH 003/120] Fix typo. --- prosody-modules/mod_muc_http_defaults/mod_muc_http_defaults.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 805dde14..39cff2e0 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 @@ -135,7 +135,7 @@ local function apply_config(room, settings) room._data.x_peertubelivechat_emoji_only_mode = config.livechat_emoji_only; end if (type(config.livechat_emoji_only_regexp) == "string" and config.livechat_emoji_only_regexp ~= "") then - room._data.x_peertubelivechat_emoji_only_regexp = config.emoji_only_regexp; + room._data.x_peertubelivechat_emoji_only_regexp = config.livechat_emoji_only_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 From 08017ac2bb755a1967115bdddfff04a6f2e47fd8 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 6 Sep 2024 11:01:48 +0200 Subject: [PATCH 004/120] Emoji only mode WIP: * refactoring + optimization * migration --- ...mod_http_peertubelivechat_manage_rooms.lua | 8 +- .../mod_muc_http_defaults.lua | 6 +- ..._muc_peertubelivechat_restrict_message.lua | 43 ++++++----- server/lib/configuration/channel/init.ts | 5 +- server/lib/emojis/emojis.ts | 23 +++--- server/lib/prosody/api/manage-rooms.ts | 6 +- server/lib/prosody/config.ts | 13 ++++ server/lib/prosody/config/content.ts | 14 +++- server/lib/prosody/migration/migrageV11-1.ts | 76 +++++++++++++++++++ server/lib/routers/api/configuration.ts | 4 +- server/lib/routers/api/room.ts | 6 +- server/main.ts | 18 ++++- 12 files changed, 172 insertions(+), 50 deletions(-) create mode 100644 server/lib/prosody/migration/migrageV11-1.ts 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 e616e9a7..94a131e1 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 @@ -18,7 +18,7 @@ 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_emoji_only_regexp = rawget(mod_muc_peertubelivechat_restrict_message, "set_peertubelivechat_emoji_only_regexp"); +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) @@ -110,9 +110,9 @@ local function update_room(event) set_peertubelivechat_emoji_only_mode(room, config.livechat_emoji_only) end end - if type(config.livechat_emoji_only_regexp) == "string" then - if set_peertubelivechat_emoji_only_mode then - set_peertubelivechat_emoji_only_regexp(room, config.livechat_emoji_only_regexp) + 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 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 39cff2e0..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 @@ -10,7 +10,7 @@ -- * "moderation_delay" -- * "anonymize_moderation_actions" -- * "livechat_emoji_only" --- * "livechat_emoji_only_regexp" +-- * "livechat_custom_emoji_regexp" -- * "livechat_muc_terms" -- These options are introduced in the Peertube livechat plugin. -- @@ -134,8 +134,8 @@ local function apply_config(room, settings) if (type(config.livechat_emoji_only) == "boolean") then room._data.x_peertubelivechat_emoji_only_mode = config.livechat_emoji_only; end - if (type(config.livechat_emoji_only_regexp) == "string" and config.livechat_emoji_only_regexp ~= "") then - room._data.x_peertubelivechat_emoji_only_regexp = config.livechat_emoji_only_regexp; + 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 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 index 1f8d2781..0ac27b65 100644 --- 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 @@ -19,6 +19,7 @@ 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; @@ -31,17 +32,17 @@ function set_peertubelivechat_emoji_only_mode(room, emoji_only) return true; end -function get_peertubelivechat_emoji_only_regexp(room) - return room._data.x_peertubelivechat_emoji_only_regexp; +function get_peertubelivechat_custom_emoji_regexp(room) + return room._data.x_peertubelivechat_custom_emoji_regexp; end -function set_peertubelivechat_emoji_only_regexp(room, emoji_only_regexp) +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_emoji_only_regexp(room) == emoji_only_regexp then return false; end - room._data.x_peertubelivechat_emoji_only_regexp = emoji_only_regexp; + 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; @@ -49,25 +50,23 @@ function set_peertubelivechat_emoji_only_regexp(room, emoji_only_regexp) end module:hook("muc-disco#info", function(event) - if get_peertubelivechat_emoji_only_mode(event.room) and get_peertubelivechat_emoji_only_regexp(event.room) ~= nil then + 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) - if (get_peertubelivechat_emoji_only_regexp(event.room) ~= nil) then - 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 -end, 121); + 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 get_peertubelivechat_emoji_only_regexp(event.room) ~= nil and set_peertubelivechat_emoji_only_mode(event.room, event.value) then + if set_peertubelivechat_emoji_only_mode(event.room, event.value) then event.status_codes["104"] = true; end end); @@ -84,10 +83,14 @@ function handle_groupchat(event) if not room.x_peertubelivechat_emoji_only_compiled_regexp then -- compute the regexp on first access - local r = get_peertubelivechat_emoji_only_regexp(room); - if (r == nil) then - return; + 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 diff --git a/server/lib/configuration/channel/init.ts b/server/lib/configuration/channel/init.ts index 96bd1af4..0ffebcf5 100644 --- a/server/lib/configuration/channel/init.ts +++ b/server/lib/configuration/channel/init.ts @@ -120,9 +120,10 @@ async function initChannelConfiguration (options: RegisterServerOptions): Promis // but will be more efficient to add here, as we already tested hasChat). // Note: no need to await here, would only degrade performances. // FIXME: should also update livechat_muc_terms if channel has changed. - // FIXME: should also update livechat_emoji_only_regexp 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/emojis/emojis.ts b/server/lib/emojis/emojis.ts index 5d7232e4..f0bd852c 100644 --- a/server/lib/emojis/emojis.ts +++ b/server/lib/emojis/emojis.ts @@ -144,7 +144,7 @@ export class Emojis { * @param sn short name */ public validShortName (sn: any): boolean { - // Important note: do not change this without checking if it can breaks getChannelEmojisOnlyRegexp. + // 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 @@ -395,14 +395,13 @@ export class Emojis { } /** - * Returns a string representing a regular expression (Perl Compatible RE) that can validate that a message - * contains only emojis (for this channel). + * 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 getChannelEmojisOnlyRegexp (channelId: number): Promise { - const parts = [...this.commonEmojisCodes] + public async getChannelCustomEmojisRegexp (channelId: number): Promise { + const parts = [] if (await this.channelHasCustomEmojis(channelId)) { const def = await this.channelCustomEmojisDefinition(channelId) @@ -411,11 +410,17 @@ export class Emojis { } } - // Note: validShortName should ensure we won't put special chars. - // And for the common emojis, we assume that there is no special regexp chars - const regexp = '^\\s*(?:(?:' + parts.join('|') + ')\\s*)+\\s*$' + if (parts.length === 0) { + return undefined + } - return regexp + // 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('|') } /** diff --git a/server/lib/prosody/api/manage-rooms.ts b/server/lib/prosody/api/manage-rooms.ts index ec52563e..f7358045 100644 --- a/server/lib/prosody/api/manage-rooms.ts +++ b/server/lib/prosody/api/manage-rooms.ts @@ -66,7 +66,7 @@ async function updateProsodyRoom ( slow_mode_duration?: number moderation_delay?: number livechat_emoji_only?: boolean - livechat_emoji_only_regexp?: string + livechat_custom_emoji_regexp?: string livechat_muc_terms?: string addAffiliations?: Affiliations removeAffiliationsFor?: string[] @@ -105,8 +105,8 @@ async function updateProsodyRoom ( if ('livechat_emoji_only' in data) { apiData.livechat_emoji_only = data.livechat_emoji_only ?? false } - if ('livechat_emoji_only_regexp' in data) { - apiData.livechat_emoji_only_regexp = data.livechat_emoji_only_regexp ?? '' + 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 diff --git a/server/lib/prosody/config.ts b/server/lib/prosody/config.ts index fc59551c..d9edee7e 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 @@ -389,6 +390,13 @@ async function getProsodyConfig (options: RegisterServerOptionsV5): Promise +// +// 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 v11.1.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/routers/api/configuration.ts b/server/lib/routers/api/configuration.ts index 7038c4e2..4127d8a3 100644 --- a/server/lib/routers/api/configuration.ts +++ b/server/lib/routers/api/configuration.ts @@ -171,13 +171,13 @@ 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 emojisOnlyRegexp = await emojis.getChannelEmojisOnlyRegexp(channelInfos.id) + 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_emoji_only_regexp: emojisOnlyRegexp + livechat_custom_emoji_regexp: customEmojisRegexp }).then( () => {}, (err) => logger.error(err) diff --git a/server/lib/routers/api/room.ts b/server/lib/routers/api/room.ts index f0d922ca..ec4df8e9 100644 --- a/server/lib/routers/api/room.ts +++ b/server/lib/routers/api/room.ts @@ -39,7 +39,7 @@ interface RoomDefaults { slow_mode_duration?: number mute_anonymous?: boolean livechat_emoji_only?: boolean - livechat_emoji_only_regexp?: string + livechat_custom_emoji_regexp?: string livechat_muc_terms?: string moderation_delay?: number anonymize_moderation_actions?: boolean @@ -54,12 +54,12 @@ async function _getChannelSpecificOptions ( const channelOptions = await getChannelConfigurationOptions(options, channelId) ?? getDefaultChannelConfigurationOptions(options) - const emojiOnlyRegexp = await Emojis.singletonSafe()?.getChannelEmojisOnlyRegexp(channelId) + const customEmojisRegexp = await Emojis.singletonSafe()?.getChannelCustomEmojisRegexp(channelId) return { slow_mode_duration: channelOptions.slowMode.duration, mute_anonymous: channelOptions.mute.anonymous, - livechat_emoji_only_regexp: emojiOnlyRegexp, + livechat_custom_emoji_regexp: customEmojisRegexp, livechat_muc_terms: channelOptions.terms, moderation_delay: channelOptions.moderation.delay, anonymize_moderation_actions: channelOptions.moderation.anonymize diff --git a/server/main.ts b/server/main.ts index 61ae90ac..f7e27547 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/migrageV11-1' 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 (error) { options.peertubeHelpers.logger.error('Error when launching Prosody: ' + (error as string)) From 91cddfa8d8b588a2619d75a3028f65928dab425d Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 6 Sep 2024 11:53:07 +0200 Subject: [PATCH 005/120] Emoji only mode WIP: * Button to enable it on all rooms. --- client/@types/global.d.ts | 6 +++ .../configuration/elements/channel-emojis.ts | 15 ++++++++ .../elements/templates/channel-emojis.ts | 21 +++++++++- .../configuration/services/channel-details.ts | 19 ++++++++++ languages/en.yml | 15 ++++++++ ...mod_http_peertubelivechat_manage_rooms.lua | 4 +- server/lib/routers/api/configuration.ts | 38 +++++++++++++++++++ 7 files changed, 116 insertions(+), 2 deletions(-) diff --git a/client/@types/global.d.ts b/client/@types/global.d.ts index 13bbbbfc..a9415661 100644 --- a/client/@types/global.d.ts +++ b/client/@types/global.d.ts @@ -144,3 +144,9 @@ 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 diff --git a/client/common/configuration/elements/channel-emojis.ts b/client/common/configuration/elements/channel-emojis.ts index 126e4c67..e7e09de8 100644 --- a/client/common/configuration/elements/channel-emojis.ts +++ b/client/common/configuration/elements/channel-emojis.ts @@ -256,6 +256,21 @@ export class ChannelEmojisElement extends LivechatElement { } } + 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/templates/channel-emojis.ts b/client/common/configuration/elements/templates/channel-emojis.ts index 12e1e293..ae354500 100644 --- a/client/common/configuration/elements/templates/channel-emojis.ts +++ b/client/common/configuration/elements/templates/channel-emojis.ts @@ -45,13 +45,14 @@ export function tplChannelEmojis (el: ChannelEmojisElement): TemplateResult { +

${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_EMOJIS_TITLE)}

+

${ptTr(LOC_LIVECHAT_CONFIGURATION_CHANNEL_EMOJIS_DESC)}

-
${ @@ -106,5 +107,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/services/channel-details.ts b/client/common/configuration/services/channel-details.ts index 99808d41..16a77153 100644 --- a/client/common/configuration/services/channel-details.ts +++ b/client/common/configuration/services/channel-details.ts @@ -312,4 +312,23 @@ export class ChannelDetailsService { return response.json() } + + public async enableEmojisOnlyModeOnAllRooms (channelId: number): Promise { + const response = await fetch( + getBaseRoute(this._registerClientOptions) + + '/api/configuration/channel/emojis/' + + encodeURIComponent(channelId) + + '/enable_emoji_only', + { + 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/languages/en.yml b/languages/en.yml index 04c3a539..3b712482 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -638,3 +638,18 @@ prosody_firewall_name_desc: | 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 rooms at once, you can use the button bellow. +emoji_only_enable_all_rooms: Enable the emoji only mode on all channel's chatrooms 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 94a131e1..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 @@ -107,7 +107,9 @@ local function update_room(event) end if type(config.livechat_emoji_only) == "boolean" then if set_peertubelivechat_emoji_only_mode then - set_peertubelivechat_emoji_only_mode(room, config.livechat_emoji_only) + 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 diff --git a/server/lib/routers/api/configuration.ts b/server/lib/routers/api/configuration.ts index 4127d8a3..23e25382 100644 --- a/server/lib/routers/api/configuration.ts +++ b/server/lib/routers/api/configuration.ts @@ -200,6 +200,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 { From b45ab79c0e26bf40e3aaa283a4718087f033c5e1 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 6 Sep 2024 12:30:43 +0200 Subject: [PATCH 006/120] Emoji only mode documentation. --- languages/en.yml | 4 ++-- .../user/streamers/emojis_only.md | 24 +++++++++++++++++++ .../en/documentation/user/streamers/polls.md | 4 ++-- 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 support/documentation/content/en/documentation/user/streamers/emojis_only.md diff --git a/languages/en.yml b/languages/en.yml index 3b712482..fabe9716 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -644,12 +644,12 @@ emoji_only_mode_desc_1: | 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: + 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 rooms at once, you can use the button bellow. + 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 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..b3ca0be6 --- /dev/null +++ b/support/documentation/content/en/documentation/user/streamers/emojis_only.md @@ -0,0 +1,24 @@ +--- +title: "Emojis only mode" +description: "Plugin peertube-plugin-livechat emojis only mode" +weight: 335 +chapter: false +--- + +{{% notice info %}} +This feature comes with the livechat plugin version 11.1.0. +{{% /notice %}} + +## {{% 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/polls.md b/support/documentation/content/en/documentation/user/streamers/polls.md index 1f6f172f..81fa5dc0 100644 --- a/support/documentation/content/en/documentation/user/streamers/polls.md +++ b/support/documentation/content/en/documentation/user/streamers/polls.md @@ -1,7 +1,7 @@ --- 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 --- From e57d5b0f309b8e2304894dbbe125db4f70c24a2b Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 6 Sep 2024 12:35:38 +0200 Subject: [PATCH 007/120] npm run doc:translate --- support/documentation/po/livechat.ar.po | 53 +- support/documentation/po/livechat.ca.po | 46 +- support/documentation/po/livechat.cs.po | 46 +- support/documentation/po/livechat.de.po | 503 +++++-------------- support/documentation/po/livechat.el.po | 46 +- support/documentation/po/livechat.en.pot | 52 +- support/documentation/po/livechat.eo.po | 46 +- support/documentation/po/livechat.es.po | 47 +- support/documentation/po/livechat.eu.po | 46 +- support/documentation/po/livechat.fa.po | 46 +- support/documentation/po/livechat.fi.po | 46 +- support/documentation/po/livechat.fr.po | 58 ++- support/documentation/po/livechat.gd.po | 46 +- support/documentation/po/livechat.gl.po | 46 +- support/documentation/po/livechat.hr.po | 51 +- support/documentation/po/livechat.hu.po | 46 +- support/documentation/po/livechat.is.po | 46 +- support/documentation/po/livechat.it.po | 46 +- support/documentation/po/livechat.ja.po | 48 +- support/documentation/po/livechat.kab.po | 46 +- support/documentation/po/livechat.nb.po | 46 +- support/documentation/po/livechat.nl.po | 46 +- support/documentation/po/livechat.nn.po | 46 +- support/documentation/po/livechat.oc.po | 46 +- support/documentation/po/livechat.pl.po | 46 +- support/documentation/po/livechat.pt.po | 46 +- support/documentation/po/livechat.ru.po | 46 +- support/documentation/po/livechat.sq.po | 46 +- support/documentation/po/livechat.sv.po | 46 +- support/documentation/po/livechat.th.po | 46 +- support/documentation/po/livechat.tok.po | 46 +- support/documentation/po/livechat.tr.po | 44 +- support/documentation/po/livechat.uk.po | 46 +- support/documentation/po/livechat.vi.po | 46 +- support/documentation/po/livechat.zh-Hans.po | 46 +- support/documentation/po/livechat.zh-Hant.po | 46 +- 36 files changed, 1697 insertions(+), 447 deletions(-) diff --git a/support/documentation/po/livechat.ar.po b/support/documentation/po/livechat.ar.po index 48615f36..efa94b88 100644 --- a/support/documentation/po/livechat.ar.po +++ b/support/documentation/po/livechat.ar.po @@ -6,17 +6,15 @@ 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-06 12:33+0200\n" "PO-Revision-Date: 2024-08-30 20:08+0000\n" "Last-Translator: ButterflyOfFire \n" -"Language-Team: Arabic \n" +"Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "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" +"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" #. type: Yaml Front Matter Hash Value: description @@ -3211,6 +3209,49 @@ 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 feature comes with the livechat plugin version 11.1.0." +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 @@ -3777,7 +3818,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 diff --git a/support/documentation/po/livechat.ca.po b/support/documentation/po/livechat.ca.po index 869b9ee8..ae558c71 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Catalan \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 50a6cd72..15ae2bb3 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Czech \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index 97bd10c3..0f0f4838 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -7,12 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-08-30 16:24+0200\n" +"POT-Creation-Date: 2024-09-06 12:33+0200\n" "PO-Revision-Date: 2024-08-31 17:22+0000\n" -"Last-Translator: Victor Hampel " -"\n" -"Language-Team: German \n" +"Last-Translator: Victor Hampel \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -460,17 +458,12 @@ msgstr "Die Dokumentation wird mit [Hugo](https://gohugo.io/) erstellt. Sie mü #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md msgid "The minimum required version for Hugo is 0.121.0. It was tested using version 0.132.2." -msgstr "" -"Die erforderliche Mindestversion für Hugo ist 0.121.0. Es wurde mit Version " -"0.132.2 getestet." +msgstr "Die erforderliche Mindestversion für Hugo ist 0.121.0. Es wurde mit Version 0.132.2 getestet." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md msgid "The used theme is [hugo-theme-relearn](https://mcshelby.github.io/hugo-theme-relearn). You should read its documentation before starting editing the documentation." -msgstr "" -"Das verwendete Thema ist [hugo-theme-learn](https://mcshelby.github.io/hugo-" -"theme-relearn). Sie sollten dessen Dokumentation lesen, bevor Sie mit der " -"Bearbeitung der Dokumentation beginnen." +msgstr "Das verwendete Thema ist [hugo-theme-learn](https://mcshelby.github.io/hugo-theme-relearn). Sie sollten dessen Dokumentation lesen, bevor Sie mit der Bearbeitung der Dokumentation beginnen." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md @@ -1780,23 +1773,13 @@ msgstr "Dies ermöglicht es den Nutzern auch, dem Chat beizutreten, ohne ein Pee #: 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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. type: Plain text #: build/documentation/pot_in/documentation/admin/external_auth.md @@ -1997,11 +1980,7 @@ msgstr "Direkt unter den Einstellungen finden Sie die Schaltfläche \"Configure #. 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 %}}\")" -msgstr "" -"![Screenshot des Formulars \"{{% livechat_label " -"prosody_firewall_configuration %}}\".](/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/mod_firewall.png?classes=shadow,border&height=400px \"{{% livechat_label prosody_firewall_configuration %}}\")" #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md @@ -2182,9 +2161,7 @@ msgstr "{{% livechat_label avatar_set_option_sepia %}}: [David Revoy's Peertube #. 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\")" -msgstr "" -"![Sepia Avatar Beispiel](/peertube-plugin-livechat/images/" -"avatar_sepia.png?classes=shadow,border&height=40px \"Sepia\")" +msgstr "![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 @@ -2194,9 +2171,7 @@ msgstr "{{% livechat_label avatar_set_option_cat %}}: [David Revoy's Katzen Avat #. 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\")" -msgstr "" -"![Katzen AvatarBeispiel](/peertube-plugin-livechat/images/" -"avatar_cat.png?classes=shadow,border&height=40px \"Katzen\")" +msgstr "![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 @@ -2206,9 +2181,7 @@ msgstr "{{% livechat_label avatar_set_option_bird %}}: [David Revoy's Vögel Ava #. 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\")" -msgstr "" -"![Vogel Avatar Beispiel](/peertube-plugin-livechat/images/" -"avatar_bird.png?classes=shadow,border&height=40px \"Vögel\")" +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 @@ -2218,9 +2191,7 @@ msgstr "{{% livechat_label avatar_set_option_fenec %}}: [David Revoy's Fenec/Mob #. 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\")" +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 @@ -2230,9 +2201,7 @@ msgstr "{{% livechat_label avatar_set_option_abstract %}}: [David Revoy's Abstra #. 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\")" +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 @@ -2242,9 +2211,7 @@ msgstr "{{% livechat_label avatar_set_option_legacy %}}: Basierend auf [David Re #. 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\")" +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 @@ -2522,11 +2489,7 @@ msgstr "Öffnen Sie die Plugin-Einstellungen, und klicken Sie auf die Schaltflä #. 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\")" -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\"" -")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/installation/troubleshooting.md @@ -2536,11 +2499,7 @@ msgstr "Wenn auf der Diagnoseseite ein Fehler auftritt, können Sie auf dieser S #. 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\")" -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 " -"\"Diagnoseergebnisse\")" +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 \"Diagnoseergebnisse\")" #. type: Title ## #: support/documentation/content/en/documentation/installation/troubleshooting.md @@ -2668,11 +2627,7 @@ msgstr "Sie können den Chat ganz einfach in Ihren Videostream integrieren." #: 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\")" -msgstr "" -"![Screenshot einer Peertube Live-Übertragung, bei der der Chat am unteren " -"Ende des Video-Streams eingebettet ist.](/peertube-plugin-livechat/images/" -"embed_chat_in_livestream.png?classes=shadow,border&height=200px \"Einbettung " -"des Chats in einen Live-Stream\")" +msgstr "![Screenshot einer Peertube Live-Übertragung, bei der der Chat am unteren Ende des Video-Streams eingebettet ist.](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px \"Einbettung des Chats in einen Live-Stream\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md @@ -2688,11 +2643,7 @@ msgstr "Aktivieren Sie das Kontrollkästchen \"{{% livechat_label read_only %}}\ #: 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\")" -msgstr "" -"![Screenshot des \"{{% livechat_label share_chat_link %}}\"-Dialogs, in dem " -"die Option \"{{% livechat_label read_only %}}\" aktiviert ist](/peertube-" -"plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px " -"\"Link teilen popup\")" +msgstr "![Screenshot des \"{{% livechat_label share_chat_link %}}\"-Dialogs, in dem die Option \"{{% livechat_label read_only %}}\" aktiviert ist](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px \"Link teilen popup\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md @@ -2703,11 +2654,7 @@ msgstr "Verwenden Sie dann diesen Link als \"Webbrowser-Quelle\" in OBS." #: 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md @@ -2765,12 +2712,7 @@ msgstr "Verwenden Sie dazu einfach die \"{{% livechat_label share_chat_link %}}\ #: 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\")" -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 " -"Registerkarte\")" +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 Registerkarte\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md @@ -2780,18 +2722,12 @@ msgstr "Kopieren Sie dann die URL und verwenden Sie das Menü \"Docks / Benutzer #. 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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md @@ -2801,11 +2737,7 @@ msgstr "Danach haben Sie ein neues Dock, das mit dem Chat und Ihrem Konto verbun #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md @@ -2869,10 +2801,7 @@ msgstr "Wenn Sie eine Peertube Live-Stream erstellen oder ändern, gibt es eine #. 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\")" -msgstr "" -"![Screenshot des Peertube-Formulars für die Live-Übertragung (/peertube-" -"plugin-livechat/images/new_live.png?classes=shadow,border&height=200px " -"\"Neuer Livestream\")" +msgstr "![Screenshot des Peertube-Formulars für die Live-Übertragung (/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px \"Neuer Livestream\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2882,11 +2811,7 @@ msgstr "Auf der Registerkarte \"Plugin-Einstellungen\" gibt es ein Kontrollkäst #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2958,12 +2883,7 @@ msgstr "Auf der Registerkarte \"{{% livechat_label web %}}\" öffnet die angegeb #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2974,12 +2894,7 @@ msgstr "Das \"{{% livechat_label share_chat_link %}}\" Popup-Fenster kann auch e #: 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 %}}\")" -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 %}}\")" +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 %}}\")" #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3027,10 +2942,7 @@ msgstr "Sie können das Dauerhaftigkeitsverhalten ändern. [Öffnen Sie das Cha #: 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\")" -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ü\")" +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ü\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3040,10 +2952,7 @@ 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\")" -msgstr "" -"![Screenshot des Chat-Konfigurationsformulars.](/peertube-plugin-livechat/" -"images/configure.png?classes=shadow,border&height=200px \"Chatraum " -"konfigurieren\")" +msgstr "![Screenshot des Chat-Konfigurationsformulars.](/peertube-plugin-livechat/images/configure.png?classes=shadow,border&height=200px \"Chatraum konfigurieren\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3091,10 +3000,7 @@ 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\")" -msgstr "" -"![Screenshot der Seite mit den Kanaloptionen, mit einigen Feldern zur " -"Konfiguration der Chatbot-Befehle.](/peertube-plugin-livechat/images/" -"bot_commands.png?classes=shadow,border&height=400px \"Befehlskonfiguration\")" +msgstr "![Screenshot der Seite mit den Kanaloptionen, mit einigen Feldern zur Konfiguration der Chatbot-Befehle.](/peertube-plugin-livechat/images/bot_commands.png?classes=shadow,border&height=400px \"Befehlskonfiguration\")" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/commands.md @@ -3116,20 +3022,12 @@ 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\")" -msgstr "" -"![Screenshot der Seite mit den Kanaloptionen, mit mehreren Feldern zur " -"Konfiguration der verbotenen Wörter.](/peertube-plugin-livechat/images/" -"bot_forbidden_words.png?classes=shadow,border&height=400px \"Konfiguration " -"der verbotenen Wörter\")" +msgstr "![Screenshot der Seite mit den Kanaloptionen, mit mehreren Feldern zur Konfiguration der verbotenen Wörter.](/peertube-plugin-livechat/images/bot_forbidden_words.png?classes=shadow,border&height=400px \"Konfiguration der verbotenen Wörter\")" #. 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\")" -msgstr "" -"![Screenshot einer Chat-Nachricht, die mit folgender Begründung gelöscht " -"wurde: \"Keine URL erlaubt\".](/peertube-plugin-livechat/images/" -"bot_deleted_message.png?classes=shadow,border&height=100px \"Gelöschte " -"Nachricht\")" +msgstr "![Screenshot einer Chat-Nachricht, die mit folgender Begründung gelöscht wurde: \"Keine URL erlaubt\".](/peertube-plugin-livechat/images/bot_deleted_message.png?classes=shadow,border&height=100px \"Gelöschte Nachricht\")" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/forbidden_words.md @@ -3210,11 +3108,7 @@ msgstr "Sie können einen Chatbot für Ihre Chaträume aktivieren. Die Chatbotk #: 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\")" -msgstr "" -"![Screenshot der Kanaloptionen; es gibt ein Formular mit mehreren Feldern" -".](/peertube-plugin-livechat/images/" -"channel_configuration.png?classes=shadow,border&height=400px " -"\"Kanalkonfiguration\")" +msgstr "![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 @@ -3251,10 +3145,7 @@ msgstr "Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine N #. 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\")" -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\")" +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 #: support/documentation/content/en/documentation/user/streamers/channel.md @@ -3276,10 +3167,7 @@ msgstr "Im linken Menü von Peertube gibt es einen Eintrag \"{{% livechat_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\")" -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ü\")" +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ü\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/channel.md @@ -3352,21 +3240,12 @@ msgstr "Öffnen Sie auf der [Kanal Konfigurationsseite](/peertube-plugin-livecha #. 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\")" -msgstr "" -"![Screenshot der Emoji-Konfigurationsseite. Es gibt ein Formular, in dem Sie " -"neue Emojis hinzufügen können.](/peertube-plugin-livechat/images/" -"channel_custom_emojis_configuration.png?classes=shadow,border&height=400px " -"\"Kanalkonfiguration / Kanal Emojis Konfiguration\")" +msgstr "![Screenshot der Emoji-Konfigurationsseite. Es gibt ein Formular, in dem Sie neue Emojis hinzufügen können.](/peertube-plugin-livechat/images/channel_custom_emojis_configuration.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Kanal Emojis Konfiguration\")" #. 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\")" -msgstr "" -"![Screenshot einer Chatsitzung mit Nachrichten, die benutzerdefinierte " -"Emojis enthalten. Die Emoji-Auswahl ist geöffnet und zeigt " -"benutzerdefinierte Emojis.](/peertube-plugin-livechat/images/" -"channel_custom_emojis.png?classes=shadow,border&height=400px " -"\"Kanalkonfiguration / Kanal Emojis\")" +msgstr "![Screenshot einer Chatsitzung mit Nachrichten, die benutzerdefinierte Emojis enthalten. Die Emoji-Auswahl ist geöffnet und zeigt benutzerdefinierte Emojis.](/peertube-plugin-livechat/images/channel_custom_emojis.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Kanal Emojis\")" #. type: Title ### #: build/documentation/pot_in/documentation/user/streamers/emojis.md @@ -3407,6 +3286,57 @@ 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 "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 +#, fuzzy, no-wrap +#| msgid "Plugin peertube-plugin-livechat slow mode" +msgid "Plugin peertube-plugin-livechat emojis only mode" +msgstr "Plugin peertube-plugin-livechat Langsamer 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 "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, 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 "Diese Funktion wird mit dem Livechatplugin Version 11.0.0 verfügbar sein." + +#. 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 "Dies kann sehr nützlich sein, um:" + +#. 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 "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: 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 "Auf der [Kanal Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/streamers/channel) können Sie die Option \"{{% livechat_label moderation_delay %}}\" einstellen:" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/_index.md #, no-wrap @@ -3475,11 +3405,7 @@ msgstr "Auf der [Kanal Konfigurationsseite](/peertube-plugin-livechat/de/documen #. 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\")" -msgstr "" -"![Screenshot des Formulars für die Kanaloptionen, mit einem Feld zur " -"Konfiguration der Moderationsverzögerung.](/peertube-plugin-livechat/images/" -"moderation_delay_channel_option.png?classes=shadow,border&height=400px " -"\"Kanalkonfiguration / Moderationsverzögerung\")" +msgstr "![Screenshot des Formulars für die Kanaloptionen, mit einem Feld zur Konfiguration der Moderationsverzögerung.](/peertube-plugin-livechat/images/moderation_delay_channel_option.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Moderationsverzögerung\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_delay.md @@ -3522,11 +3448,7 @@ msgstr "Als Moderator sehen Sie neben dem Datum der Nachricht auch die verbleibe #. 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\")" -msgstr "" -"![Screenshot einer Chat-Nachricht. Neben dem Datum der Nachricht wird ein " -"Timer angezeigt. Der Timer ist in Sekunden.](/peertube-plugin-livechat/" -"images/moderation_delay_timer.png?classes=shadow,border " -"\"Moderationsverzögerungstimer\")" +msgstr "![Screenshot einer Chat-Nachricht. Neben dem Datum der Nachricht wird ein Timer angezeigt. Der Timer ist in Sekunden.](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border \"Moderationsverzögerungstimer\")" #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3606,12 +3528,7 @@ msgstr "Um diese Funktion zu aktivieren oder zu deaktivieren, verwenden Sie das #. 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\")" -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\")" +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\")" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3621,12 +3538,7 @@ msgstr "Anonyme Benutzer haben das Nachrichtenfeld nicht und sehen folgende Auff #. 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\")" -msgstr "" -"![Screenshot einer Chatsitzung. Der aktuelle Benutzer hat kein " -"Nachrichtenfeld. Es gibt eine Nachricht: \"{{% livechat_label " -"muted_anonymous_message %}}\"](/peertube-plugin-livechat/images/" -"anonymous_muted.png?classes=shadow,border&height=400px \"Raumkonfiguration / " -"Stummgeschaltete anonyme Benutzer\")" +msgstr "![Screenshot einer Chatsitzung. Der aktuelle Benutzer hat kein Nachrichtenfeld. Es gibt eine Nachricht: \"{{% livechat_label muted_anonymous_message %}}\"](/peertube-plugin-livechat/images/anonymous_muted.png?classes=shadow,border&height=400px \"Raumkonfiguration / Stummgeschaltete anonyme Benutzer\")" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3698,12 +3610,7 @@ msgstr "die Aktion \"{{% livechat_label search_occupant_message %}}\" im Dropdow #. 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\")" -msgstr "" -"![Screenshot einer Chatsitzung. Der Moderator hat das Nachrichtenmenü " -"geöffnet, und es gibt eine Schaltfläche \"{{% livechat_label " -"search_occupant_message %}}\".](/peertube-plugin-livechat/images/" -"message_search.png?classes=shadow,border&height=200px " -"\"Nachrichtenverlaufssuche\")" +msgstr "![Screenshot einer Chatsitzung. Der Moderator hat das Nachrichtenmenü geöffnet, und es gibt eine Schaltfläche \"{{% livechat_label search_occupant_message %}}\".](/peertube-plugin-livechat/images/message_search.png?classes=shadow,border&height=200px \"Nachrichtenverlaufssuche\")" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3829,22 +3736,12 @@ msgstr "Um die Anwendung Moderationsnotizen zu öffnen, gibt es eine Schaltfläc #. 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\")" -msgstr "" -"![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das " -"obere Menü des Chats ist geöffnet, mit einer \"{{% livechat_label " -"\"moderator_notes\" %}}\"-Schaltfläche.](/peertube-plugin-livechat/images/" -"moderation_notes_open_app_video.png?classes=shadow,border&height=200px " -"\"Öffnen des Moderator Notizen Programms\")" +msgstr "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das obere Menü des Chats ist geöffnet, mit einer \"{{% livechat_label \"moderator_notes\" %}}\"-Schaltfläche.](/peertube-plugin-livechat/images/moderation_notes_open_app_video.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 "![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/" -"moderation_notes_open_app_fullpage.png?classes=shadow,border&height=200px " -"\"Öffnen des Moderator Notizen Programms\")" +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/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 @@ -3854,22 +3751,12 @@ msgstr "Wenn Sie auf diese Schaltfläche klicken, wird die Anzeige der Anwendung #. 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\")" -msgstr "" -"![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Die " -"Anwendung für Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, " -"einige davon sind mit Benutzern verknüpft.](/peertube-plugin-livechat/images/" -"moderator_notes_app_video_1.png?classes=shadow,border&height=200px " -"\"Moderator Notizen Programm\")" +msgstr "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Die Anwendung für Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, einige davon sind mit Benutzern verknüpft.](/peertube-plugin-livechat/images/moderator_notes_app_video_1.png?classes=shadow,border&height=200px \"Moderator Notizen Programm\")" #. 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\")" -msgstr "" -"![Screenshot eines Peertube-Chats, Vollbild. Die Anwendung für " -"Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, einige davon sind " -"mit Benutzern verknüpft.](/peertube-plugin-livechat/images/" -"moderator_notes_app_fullpage_1.png?classes=shadow,border&height=200px " -"\"Moderator Notizen Programm\")" +msgstr "![Screenshot eines Peertube-Chats, Vollbild. Die Anwendung für Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, einige davon sind mit Benutzern verknüpft.](/peertube-plugin-livechat/images/moderator_notes_app_fullpage_1.png?classes=shadow,border&height=200px \"Moderator Notizen Programm\")" #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3987,12 +3874,7 @@ msgstr "Sie können den Filter entfernen, indem Sie auf die Schaltfläche \"Schl #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -4022,8 +3904,9 @@ 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." +#, fuzzy, no-wrap +#| msgid "You can create polls to ask viewers their opinion." +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 @@ -4046,11 +3929,7 @@ msgstr "Sie können eine neue Umfrage erstellen, indem Sie die Aktion \"{{% live #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4142,12 +4021,7 @@ msgstr "Außerdem wird ein Banner erscheinen, das die Umfrage anzeigt und regelm #. 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\")" -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 " -"oberen Rand des Chats, auf dem die Frage und die Anzahl der Stimmen für die " -"einzelnen Antworten zu sehen sind.](/peertube-plugin-livechat/images/" -"polls_start.png?classes=shadow,border&height=200px \"Umfragestart\")" +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 oberen Rand des Chats, auf dem die Frage und die Anzahl der Stimmen für die einzelnen Antworten zu sehen sind.](/peertube-plugin-livechat/images/polls_start.png?classes=shadow,border&height=200px \"Umfragestart\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4167,11 +4041,7 @@ msgstr "Die Zuschauer können ihre Wahl jederzeit ändern, indem sie einfach ein #. 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\")" -msgstr "" -"![Screenshot einer Chatsitzung mit einer laufenden Umfrage. Der aktuelle " -"Benutzer hat gerade abgestimmt, indem er \"!1\" gesendet hat.](/peertube-" -"plugin-livechat/images/polls_votes.png?classes=shadow,border&height=200px " -"\"Umfrage abstimmen\")" +msgstr "![Screenshot einer Chatsitzung mit einer laufenden Umfrage. Der aktuelle Benutzer hat gerade abgestimmt, indem er \"!1\" gesendet hat.](/peertube-plugin-livechat/images/polls_votes.png?classes=shadow,border&height=200px \"Umfrage abstimmen\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4196,13 +4066,7 @@ msgstr "Wenn die Umfrage beendet ist, wird im Chat eine neue Nachricht mit den E #. 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\")" -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 " -"\"Umfrageende\")" +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 \"Umfrageende\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/polls.md @@ -4270,11 +4134,7 @@ msgstr "Auf der [Kanal Konfigurations Seite](/peertube-plugin-livechat/de/docume #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md @@ -4301,12 +4161,7 @@ msgstr "Wenn der langsame Modus aktiviert ist, wird der Benutzer durch eine Nach #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/slow_mode.md @@ -4370,22 +4225,12 @@ msgstr "Um die Aufgabenanwendung zu öffnen, gibt es eine Schaltfläche \"{{% li #. 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\")" -msgstr "" -"![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das " -"obere Menü des Chats ist geöffnet, mit einer Schaltfläche \"{{% " -"livechat_label tasks %}}\".](/peertube-plugin-livechat/images/" -"task_open_app_video.png?classes=shadow,border&height=200px \"Öffnen der " -"Aufgabenanwendung\")" +msgstr "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das obere Menü des Chats ist geöffnet, mit einer Schaltfläche \"{{% livechat_label tasks %}}\".](/peertube-plugin-livechat/images/task_open_app_video.png?classes=shadow,border&height=200px \"Öffnen der Aufgabenanwendung\")" #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4395,22 +4240,12 @@ msgstr "Wenn Sie auf diese Schaltfläche klicken, wird die Anzeige der Aufgabena #. 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\")" -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\"" -")" +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 " -"\"Aufgabenanwendung\")" +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 @@ -4446,11 +4281,7 @@ 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\")" -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\"" -")" +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\")" #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4472,20 +4303,12 @@ msgstr "Sie können eine Aufgabe über die Schaltfläche rechts neben der Aufgab #. 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\")" -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" -"\")" +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\")" #. 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\")" -msgstr "" -"![Screenshot der Aufgabenanwendung. Unter der ersten Aufgabenliste wurde " -"eine neue Aufgabe erstellt.](/peertube-plugin-livechat/images/" -"task_app_task_1.png?classes=shadow,border&height=200px \"Aufgabe erstellt\")" +msgstr "![Screenshot der Aufgabenanwendung. Unter der ersten Aufgabenliste wurde eine neue Aufgabe erstellt.](/peertube-plugin-livechat/images/task_app_task_1.png?classes=shadow,border&height=200px \"Aufgabe erstellt\")" #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4506,11 +4329,7 @@ msgstr "Aufgaben können durch direktes Anklicken des Kontrollkästchens in der #. 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\")" -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\")" +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\")" #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4526,20 +4345,12 @@ msgstr "Sie können Aufgaben sortieren oder von einer Liste in eine andere versc #. 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\")" -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\")" +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\")" #. 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\")" -msgstr "" -"![Screenshot der Aufgabenanwendung. Es gibt eine Aufgabe, die über eine " -"andere Aufgabenliste gezogen wird.](/peertube-plugin-livechat/images/" -"task_drag_drop_task_list.png?classes=shadow,border&height=200px \"Drag und " -"drop zum verschieben zu einer anderen Liste\")" +msgstr "![Screenshot der Aufgabenanwendung. Es gibt eine Aufgabe, die über eine andere Aufgabenliste gezogen wird.](/peertube-plugin-livechat/images/task_drag_drop_task_list.png?classes=shadow,border&height=200px \"Drag und drop zum verschieben zu einer anderen Liste\")" #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4555,32 +4366,17 @@ msgstr "Sie können eine Aufgabe aus einer Nachricht in einem Chat erstellen, in #. 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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. 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\")" -msgstr "" -"![Screenshot der Aufgabenanwendung. Eine neue Aufgabe wurde in der " -"Aufgabenliste \"Chat-Fragen\" hinzugefügt, mit dem Spitznamen des Benutzers " -"und der Nachricht als Inhalt.](/peertube-plugin-livechat/images/" -"task_from_message_3.png?classes=shadow,border&height=200px \"Aufgabe " -"erstellt\")" +msgstr "![Screenshot der Aufgabenanwendung. Eine neue Aufgabe wurde in der Aufgabenliste \"Chat-Fragen\" hinzugefügt, mit dem Spitznamen des Benutzers und der Nachricht als Inhalt.](/peertube-plugin-livechat/images/task_from_message_3.png?classes=shadow,border&height=200px \"Aufgabe erstellt\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4618,11 +4414,7 @@ msgstr "Um die Nutzungsbedingungen zu konfigurieren, gehen Sie auf die [Kanal-Ko #. 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\")" -msgstr "" -"![Screenshot des Formulars für die Kanaloptionen mit einem Feld für die " -"Konfiguration der Nutzungsbedingungen.](/peertube-plugin-livechat/images/" -"channel_terms_config.png?classes=shadow,border&height=400px " -"\"Kanalkonfiguration / Nutzungsbedingungen\")" +msgstr "![Screenshot des Formulars für die Kanaloptionen mit einem Feld für die Konfiguration der Nutzungsbedingungen.](/peertube-plugin-livechat/images/channel_terms_config.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Nutzungsbedingungen\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -4643,10 +4435,7 @@ 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\")" -msgstr "" -"![Screenshot einer Chatsitzung. Am oberen Rand des Chats stehen die " -"Bedingungen für den Server und den Kanal.](/peertube-plugin-livechat/images/" -"terms.png?classes=shadow,border&height=400px \"Nutzungsbedingungen\")" +msgstr "![Screenshot einer Chatsitzung. Am oberen Rand des Chats stehen die Bedingungen für den Server und den Kanal.](/peertube-plugin-livechat/images/terms.png?classes=shadow,border&height=400px \"Nutzungsbedingungen\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -4695,10 +4484,7 @@ msgstr "Wenn Sie ein Peertube-Video ansehen, bei dem der Chat aktiviert ist, seh #: 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md @@ -4719,12 +4505,7 @@ msgstr "Wenn Sie auf der Peertube-Instanz, auf der Sie das Video ansehen, nicht #. 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\")" -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\")" +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\")" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md @@ -4734,11 +4515,7 @@ msgstr "Bevor Sie im Chatraum sprechen können, müssen Sie einen Spitznamen in #. 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\")" -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\")" +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\")" #. type: Title #### #: support/documentation/content/en/documentation/user/viewers.md @@ -4791,12 +4568,7 @@ msgstr "Wenn Sie ein Peertube Konto haben, aber nicht auf der aktuellen Instanz, #. 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\")" -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\")" +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\")" #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4838,11 +4610,7 @@ 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\")" -msgstr "" -"![Screenshot einer Chatsitzung, rechts die Liste der Teilnehmer](/peertube-" -"plugin-livechat/images/" -"open_participants_list.png?classes=shadow,border&height=200px " -"\"Teilnehmerliste\")" +msgstr "![Screenshot einer Chatsitzung, rechts die Liste der Teilnehmer](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px \"Teilnehmerliste\")" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md @@ -4875,10 +4643,7 @@ msgstr "Oben im Chat gibt es eine Schaltfläche, um den Chat im Vollbildmodus zu #: 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\")" -msgstr "" -"![Screenshot des Chats über die gesamte Webseite.](/peertube-plugin-livechat/" -"images/fullscreen.png?classes=shadow,border&height=200px \"Vollbild Chat " -"Bildschirmfoto\")" +msgstr "![Screenshot des Chats über die gesamte Webseite.](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px \"Vollbild Chat Bildschirmfoto\")" #. type: Plain text #: support/documentation/content/en/documentation/user/viewers.md @@ -4936,10 +4701,7 @@ msgstr "Um die Adresse des Raums, dem Sie beitreten möchten, zu erhalten, könn #. 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\")" +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 @@ -5043,12 +4805,7 @@ msgstr "Als Peertube-Administrator können Sie dieses Plugin auf Ihrer Instanz e #. 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\")" -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\"" -")" +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\")" #. type: Title ## #: support/documentation/content/en/intro/_index.md diff --git a/support/documentation/po/livechat.el.po b/support/documentation/po/livechat.el.po index ba915eb9..1a506225 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Greek \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.en.pot b/support/documentation/po/livechat.en.pot index ef5404c2..64683447 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-06 12:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3621,6 +3621,54 @@ 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 feature comes with the livechat plugin version 11.1.0." +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 @@ -4266,7 +4314,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 diff --git a/support/documentation/po/livechat.eo.po b/support/documentation/po/livechat.eo.po index 9a87a1a3..ef4cf72b 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Esperanto \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.es.po b/support/documentation/po/livechat.es.po index ffcc5a60..322745cf 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-06 12:33+0200\n" "PO-Revision-Date: 2024-04-16 21:38+0000\n" "Last-Translator: rnek0 \n" "Language-Team: Spanish \n" @@ -3248,6 +3248,49 @@ 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 feature comes with the livechat plugin version 11.1.0." +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 @@ -3814,7 +3857,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 diff --git a/support/documentation/po/livechat.eu.po b/support/documentation/po/livechat.eu.po index 0badddc2..1fed0e83 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Basque \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.fa.po b/support/documentation/po/livechat.fa.po index b33a3d09..6e44ec0d 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Persian \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.fi.po b/support/documentation/po/livechat.fi.po index 4513f1df..c420841a 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Finnish \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.fr.po b/support/documentation/po/livechat.fr.po index 6da21db5..58663435 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-06 12:33+0200\n" "PO-Revision-Date: 2024-08-12 11:25+0000\n" "Last-Translator: John Livingston \n" "Language-Team: French \n" @@ -3370,6 +3370,57 @@ 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 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." + +#. 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 @@ -3972,8 +4023,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 diff --git a/support/documentation/po/livechat.gd.po b/support/documentation/po/livechat.gd.po index 327a51f0..1a0f3e80 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Gaelic \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.gl.po b/support/documentation/po/livechat.gl.po index a8dbfd4d..ad36ac47 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Galician \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.hr.po b/support/documentation/po/livechat.hr.po index 4c7acc7a..c39dcc46 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.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-06 12:33+0200\n" "PO-Revision-Date: 2024-07-19 17:45+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" @@ -3261,6 +3261,53 @@ 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 "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, 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." + +#. 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 @@ -3840,7 +3887,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 diff --git a/support/documentation/po/livechat.hu.po b/support/documentation/po/livechat.hu.po index f48fbde5..2580c66f 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Hungarian \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.is.po b/support/documentation/po/livechat.is.po index e86f7dad..c32ad845 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Icelandic \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.it.po b/support/documentation/po/livechat.it.po index 224de848..d5136725 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 14:21+0000\n" "Last-Translator: John Livingston \n" "Language-Team: Italian \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.ja.po b/support/documentation/po/livechat.ja.po index 40006ba1..7e693bb6 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-06 12:33+0200\n" "PO-Revision-Date: 2024-08-29 10:38+0000\n" "Last-Translator: \"T.S\" \n" "Language-Team: Japanese \n" @@ -3313,6 +3313,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 "" +#. 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 feature comes with the livechat plugin version 11.1.0." +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 @@ -3899,7 +3943,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 diff --git a/support/documentation/po/livechat.kab.po b/support/documentation/po/livechat.kab.po index cd9289f0..edc25f42 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kabyle \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.nb.po b/support/documentation/po/livechat.nb.po index 2496527e..2851103c 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Bokmål \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.nl.po b/support/documentation/po/livechat.nl.po index 9bc98c52..27392a03 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Dutch \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.nn.po b/support/documentation/po/livechat.nn.po index bb40b6ba..aa828e74 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Nynorsk \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.oc.po b/support/documentation/po/livechat.oc.po index 841c32f4..fb725178 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Occitan \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.pl.po b/support/documentation/po/livechat.pl.po index fe4b81c8..f361b5bc 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Polish \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.pt.po b/support/documentation/po/livechat.pt.po index b99e24fd..a678f0bc 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Portuguese \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.ru.po b/support/documentation/po/livechat.ru.po index e0d92b06..f00efa35 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Russian \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.sq.po b/support/documentation/po/livechat.sq.po index d203d36e..56f84650 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Albanian \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.sv.po b/support/documentation/po/livechat.sv.po index dcaa41ea..de128a5c 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Swedish \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.th.po b/support/documentation/po/livechat.th.po index 664022c0..04f4987c 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Thai \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.tok.po b/support/documentation/po/livechat.tok.po index 74e30ddc..b981dde1 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Toki Pona \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.tr.po b/support/documentation/po/livechat.tr.po index 8debc62b..1074e40a 100644 --- a/support/documentation/po/livechat.tr.po +++ b/support/documentation/po/livechat.tr.po @@ -3188,6 +3188,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3754,7 +3796,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 diff --git a/support/documentation/po/livechat.uk.po b/support/documentation/po/livechat.uk.po index f5bfabad..e26fa21a 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Ukrainian \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.vi.po b/support/documentation/po/livechat.vi.po index 1c2d7aac..2eeeca24 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Vietnamese \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.zh-Hans.po b/support/documentation/po/livechat.zh-Hans.po index 9225f457..d35b047b 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Simplified) \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 diff --git a/support/documentation/po/livechat.zh-Hant.po b/support/documentation/po/livechat.zh-Hant.po index 2b382b82..23107c55 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-06 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Traditional) \n" @@ -3207,6 +3207,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 +msgid "This feature comes with the livechat plugin version 11.1.0." +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 @@ -3773,7 +3815,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 From acce1c5a5c6b01c7cfdbb197a8360191c4f4178a Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 6 Sep 2024 16:02:22 +0200 Subject: [PATCH 008/120] Reverting typescript version to 4.3.5, because it breaks linting. --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1137c37c..5d01d585 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,7 +56,7 @@ "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", "svgo": "^2.8.0", - "typescript": "^4.9.5", + "typescript": "^4.3.5", "yaml": "^2.2.1" }, "engines": { @@ -13697,9 +13697,9 @@ "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": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -24788,9 +24788,9 @@ "dev": true }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, "uid-safe": { diff --git a/package.json b/package.json index 7eecc0c3..b8e7e240 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", "svgo": "^2.8.0", - "typescript": "^4.9.5", + "typescript": "^4.3.5", "yaml": "^2.2.1" }, "engine": { From 8ad762eaa294f47663857ef63766e650d559b659 Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Tue, 3 Sep 2024 09:49:43 +0000 Subject: [PATCH 009/120] Translated using Weblate (Albanian) Currently translated at 66.2% (196 of 296 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/sq/ --- languages/sq.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/languages/sq.yml b/languages/sq.yml index acd56b38..adfcdf5c 100644 --- a/languages/sq.yml +++ b/languages/sq.yml @@ -246,3 +246,4 @@ 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 From ac64c27c3e8884aab074c4c2fb4dcf0c114c7361 Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Sat, 7 Sep 2024 02:40:11 +0000 Subject: [PATCH 010/120] Translated using Weblate (German) Currently translated at 100.0% (302 of 302 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/de/ --- languages/de.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/languages/de.yml b/languages/de.yml index f4a54595..2801d428 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -601,3 +601,19 @@ 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" From b3d74a3816b5f51af827f0e374cb66f93ad2b17d Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Sat, 7 Sep 2024 02:02:21 +0000 Subject: [PATCH 011/120] Translated using Weblate (German) Currently translated at 100.0% (888 of 888 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/de/ --- support/documentation/po/livechat.de.po | 52 ++++++++++++++----------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index 0f0f4838..6f62b6bf 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -8,15 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-09-06 12:33+0200\n" -"PO-Revision-Date: 2024-08-31 17:22+0000\n" -"Last-Translator: Victor Hampel \n" -"Language-Team: German \n" +"PO-Revision-Date: 2024-09-07 06:09+0000\n" +"Last-Translator: Victor Hampel " +"\n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 5.7\n" +"X-Generator: Weblate 5.7.1\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -3288,54 +3290,58 @@ msgstr "Das Attribut `sn` ist der Kurznamencode. Das Attribut \"url\" kann eine #. 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" +#, no-wrap msgid "Plugin peertube-plugin-livechat emojis only mode" -msgstr "Plugin peertube-plugin-livechat Langsamer Modus" +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 "" +msgstr "Nur Emojis-Modus" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -#, 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 "Diese Funktion wird mit dem Livechatplugin Version 11.0.0 verfügbar sein." +msgstr "" +"Diese Funktion wird mit dem Livechatplugin Version 11.1.0 verfügbar sein." #. 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 "Dies kann sehr nützlich sein, um:" +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 -#, 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 "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 %}}\"." +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 -#, 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 "Auf der [Kanal Konfigurationsseite](/peertube-plugin-livechat/de/documentation/user/streamers/channel) können Sie die Option \"{{% livechat_label moderation_delay %}}\" einstellen:" +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 @@ -3904,10 +3910,10 @@ 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 -#, fuzzy, no-wrap -#| msgid "You can create polls to ask viewers their opinion." +#, 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." +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 From b6028ef740c93fae6d0d9ff9a8949743514abc76 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Sat, 7 Sep 2024 12:21:32 +0200 Subject: [PATCH 012/120] Changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 665ee9b6..33f6c398 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ * #131: Emoji only mode. +### Minor changes and fixes + +* Various translation updates. + ## 11.0.1 ### Minor changes and fixes From f15d3ed542643a2b2ffb3d0f0817fde9d8c3b399 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Sat, 7 Sep 2024 00:46:23 +0200 Subject: [PATCH 013/120] New option for the moderation bot: * forbid messages with too many special characters (#517). * update moderation bot to v0.4.0. * refactoring localization segments to reuse existing one in multiple context. * npm run doc:translate --- CHANGELOG.md | 1 + client/@types/global.d.ts | 13 +- .../templates/channel-configuration.ts | 128 +++++++++++++++++- .../configuration/services/channel-details.ts | 16 +++ languages/ar.yml | 2 +- languages/de.yml | 9 +- languages/en.yml | 17 ++- languages/es.yml | 9 +- languages/fr.yml | 11 +- languages/hr.yml | 7 +- languages/ja.yml | 8 +- languages/pl.yml | 2 +- languages/sq.yml | 2 +- languages/sv.yml | 2 +- languages/zh-Hant.yml | 4 +- package-lock.json | 30 ++-- package.json | 2 +- server/lib/configuration/channel/sanitize.ts | 24 ++++ server/lib/configuration/channel/storage.ts | 51 +++++++ server/lib/routers/api/configuration.ts | 13 ++ shared/lib/types.ts | 8 ++ .../user/streamers/bot/forbidden_words.md | 10 +- .../user/streamers/bot/quotes.md | 2 +- .../user/streamers/bot/special_chars.md | 30 ++++ .../forbid_special_chars_configuration.png | Bin 0 -> 101487 bytes support/documentation/po/livechat.ar.po | 43 ++++-- support/documentation/po/livechat.ca.po | 43 ++++-- support/documentation/po/livechat.cs.po | 43 ++++-- support/documentation/po/livechat.de.po | 76 ++++++----- support/documentation/po/livechat.el.po | 43 ++++-- support/documentation/po/livechat.en.pot | 46 +++++-- support/documentation/po/livechat.eo.po | 43 ++++-- support/documentation/po/livechat.es.po | 45 ++++-- support/documentation/po/livechat.eu.po | 43 ++++-- support/documentation/po/livechat.fa.po | 43 ++++-- support/documentation/po/livechat.fi.po | 43 ++++-- support/documentation/po/livechat.fr.po | 50 +++++-- support/documentation/po/livechat.gd.po | 43 ++++-- support/documentation/po/livechat.gl.po | 43 ++++-- support/documentation/po/livechat.hr.po | 49 +++++-- support/documentation/po/livechat.hu.po | 43 ++++-- support/documentation/po/livechat.is.po | 43 ++++-- support/documentation/po/livechat.it.po | 43 ++++-- support/documentation/po/livechat.ja.po | 45 ++++-- support/documentation/po/livechat.kab.po | 43 ++++-- support/documentation/po/livechat.nb.po | 43 ++++-- support/documentation/po/livechat.nl.po | 43 ++++-- support/documentation/po/livechat.nn.po | 43 ++++-- support/documentation/po/livechat.oc.po | 43 ++++-- support/documentation/po/livechat.pl.po | 43 ++++-- support/documentation/po/livechat.pt.po | 43 ++++-- support/documentation/po/livechat.ru.po | 43 ++++-- support/documentation/po/livechat.sq.po | 43 ++++-- support/documentation/po/livechat.sv.po | 43 ++++-- support/documentation/po/livechat.th.po | 43 ++++-- support/documentation/po/livechat.tok.po | 43 ++++-- support/documentation/po/livechat.tr.po | 41 ++++-- support/documentation/po/livechat.uk.po | 43 ++++-- support/documentation/po/livechat.vi.po | 43 ++++-- support/documentation/po/livechat.zh-Hans.po | 43 ++++-- support/documentation/po/livechat.zh-Hant.po | 43 ++++-- 61 files changed, 1471 insertions(+), 529 deletions(-) create mode 100644 support/documentation/content/en/documentation/user/streamers/bot/special_chars.md create mode 100644 support/documentation/content/en/images/forbid_special_chars_configuration.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 33f6c398..aa577cb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### New features * #131: Emoji only mode. +* #517: new option for the moderation bot: forbid messages with too many special characters. ### Minor changes and fixes diff --git a/client/@types/global.d.ts b/client/@types/global.d.ts index a9415661..84de939f 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 @@ -150,3 +150,8 @@ 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 diff --git a/client/common/configuration/elements/templates/channel-configuration.ts b/client/common/configuration/elements/templates/channel-configuration.ts index ff950eec..33453a4c 100644 --- a/client/common/configuration/elements/templates/channel-configuration.ts +++ b/client/common/configuration/elements/templates/channel-configuration.ts @@ -20,16 +20,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), @@ -337,6 +337,126 @@ 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)} + +
+ ` + } + 10 + ) { + propertiesError['bot.forbidSpecialChars.tolerance'].push(ValidationErrorType.NotInRange) + } + } + for (const [i, fw] of botConf.forbiddenWords.entries()) { for (const v of fw.entries) { propertiesError[`bot.forbiddenWords.${i}.entries`] = [] 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/de.yml b/languages/de.yml index 2801d428..9351dc85 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,8 @@ 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 +livechat_configuration_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" 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 diff --git a/languages/en.yml b/languages/en.yml index fabe9716..ca29b384 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -409,8 +409,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" @@ -419,10 +419,10 @@ 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 +livechat_configuration_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_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: | @@ -653,3 +653,10 @@ 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: Tolérance +livechat_configuration_channel_special_chars_tolerance_desc: Number of special characters to accept before deleting messages. 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/fr.yml b/languages/fr.yml index a6a4cba3..2a0d6fd0 100644 --- a/languages/fr.yml +++ b/languages/fr.yml @@ -315,14 +315,14 @@ 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é +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 +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 @@ -351,9 +351,8 @@ 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" diff --git a/languages/hr.yml b/languages/hr.yml index fb96a32b..b77e866f 100644 --- a/languages/hr.yml +++ b/languages/hr.yml @@ -54,17 +54,14 @@ 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 +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 diff --git a/languages/ja.yml b/languages/ja.yml index ce141fbd..6d49bb48 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: メッセージ diff --git a/languages/pl.yml b/languages/pl.yml index 39f24c8f..4e2bcaac 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 diff --git a/languages/sq.yml b/languages/sq.yml index adfcdf5c..9ae1a05a 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. 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 5d01d585..ca007385 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "log-rotate": "^0.2.8", "openid-client": "^5.6.5", "validate-color": "^2.2.1", - "xmppjs-chat-bot": "^0.3.0" + "xmppjs-chat-bot": "^0.4.0" }, "devDependencies": { "@lit-labs/motion": "^1.0.7", @@ -6142,9 +6142,9 @@ } }, "node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "engines": { "node": ">=16" } @@ -14265,9 +14265,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.4.0", + "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.4.0.tgz", + "integrity": "sha512-vN+hWlrSDKmOK+XDOx3VmBffQkEYtfEhLDiovwy8PqPJnyEGESsIcva33hvzWrBYES8hTz1DX320aFYx5tnnNA==", "funding": [ "https://paypal.me/JohnXLivingston", "https://liberapay.com/JohnLivingston/" @@ -14279,7 +14279,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" @@ -19153,9 +19153,9 @@ } }, "commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==" }, "commondir": { "version": "1.0.1", @@ -25227,9 +25227,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.4.0", + "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.4.0.tgz", + "integrity": "sha512-vN+hWlrSDKmOK+XDOx3VmBffQkEYtfEhLDiovwy8PqPJnyEGESsIcva33hvzWrBYES8hTz1DX320aFYx5tnnNA==", "requires": { "@xmpp/client": "^0.13.1", "@xmpp/component": "^0.13.1", @@ -25237,7 +25237,7 @@ "@xmpp/id": "^0.13.1", "@xmpp/jid": "^0.13.1", "@xmpp/xml": "^0.13.1", - "commander": "^11.0.0" + "commander": "^11.1.0" } }, "xtend": { diff --git a/package.json b/package.json index b8e7e240..a9e88b7d 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "log-rotate": "^0.2.8", "openid-client": "^5.6.5", "validate-color": "^2.2.1", - "xmppjs-chat-bot": "^0.3.0" + "xmppjs-chat-bot": "^0.4.0" }, "devDependencies": { "@lit-labs/motion": "^1.0.7", diff --git a/server/lib/configuration/channel/sanitize.ts b/server/lib/configuration/channel/sanitize.ts index 8a72f9ed..5f2d1987 100644 --- a/server/lib/configuration/channel/sanitize.ts +++ b/server/lib/configuration/channel/sanitize.ts @@ -44,6 +44,14 @@ async function sanitizeChannelConfigurationOptions ( const mute = data.mute ?? {} mute.anonymous ??= false + // forbidSpecialChars comes with livechat 11.1.0 + botData.forbidSpecialChars ??= { + enabled: false, + reason: '', + tolerance: 0, + applyToModerators: false + } + if (typeof mute !== 'object') { throw new Error('Invalid data.mute data type') } @@ -63,6 +71,7 @@ async function sanitizeChannelConfigurationOptions ( enabled: _readBoolean(botData, 'enabled'), nickname: _readSimpleInput(botData, 'nickname', true), forbiddenWords: await _readForbiddenWords(botData), + forbidSpecialChars: await _readForbidSpecialChars(botData), quotes: _readQuotes(botData), commands: _readCommands(botData) // TODO: bannedJIDs @@ -229,6 +238,21 @@ async function _readForbiddenWords (botData: any): Promise { + if (typeof botData.forbidSpecialChars !== 'object') { + 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, 10), + applyToModerators: _readBoolean(botData.forbidSpecialChars, 'applyToModerators') + } + return result +} + function _readQuotes (botData: any): ChannelConfigurationOptions['bot']['quotes'] { if (!Array.isArray(botData.quotes)) { throw new Error('Invalid quotes data') diff --git a/server/lib/configuration/channel/storage.ts b/server/lib/configuration/channel/storage.ts index d9ecc1fe..f99e3817 100644 --- a/server/lib/configuration/channel/storage.ts +++ b/server/lib/configuration/channel/storage.ts @@ -44,6 +44,12 @@ function getDefaultChannelConfigurationOptions (_options: RegisterServerOptions) enabled: false, nickname: 'Sepia', forbiddenWords: [], + forbidSpecialChars: { + enabled: false, + reason: '', + tolerance: 0, + applyToModerators: false + }, quotes: [], commands: [] }, @@ -113,6 +119,11 @@ 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)) + } channelConfigurationOptions.bot.quotes.forEach((v, i) => { const id = 'quote_' + i.toString() handlersIds.set(id, true) @@ -202,6 +213,46 @@ 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 _getQuotesHandler ( id: string, quotes: ChannelConfigurationOptions['bot']['quotes'][0] diff --git a/server/lib/routers/api/configuration.ts b/server/lib/routers/api/configuration.ts index 23e25382..8ff5014b 100644 --- a/server/lib/routers/api/configuration.ts +++ b/server/lib/routers/api/configuration.ts @@ -96,6 +96,19 @@ async function initConfigurationApiRouter (options: RegisterServerOptions, route req.body.bot = channelOptions.bot req.body.bot.enabled = false } + // TODO: Same for forbidSpecialChars: 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 + // } channelOptions = await sanitizeChannelConfigurationOptions(options, channelInfos.id, req.body) } catch (err) { logger.warn(err) diff --git a/shared/lib/types.ts b/shared/lib/types.ts index 9d3915da..e2a9fe47 100644 --- a/shared/lib/types.ts +++ b/shared/lib/types.ts @@ -96,6 +96,7 @@ interface ChannelConfigurationOptions { forbiddenWords: ChannelForbiddenWords[] quotes: ChannelQuotes[] commands: ChannelCommands[] + forbidSpecialChars: ChannelForbidSpecialChars // TODO: bannedJIDs: string[] } slowMode: { @@ -132,6 +133,13 @@ interface ChannelCommands { message: string } +interface ChannelForbidSpecialChars { + enabled: boolean + tolerance: number + reason: string + applyToModerators: boolean +} + interface ChannelConfiguration { channel: ChannelInfos configuration: ChannelConfigurationOptions 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/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..8a21ca97 --- /dev/null +++ b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md @@ -0,0 +1,30 @@ +--- +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 %}} + +{{% notice info %}} +This feature comes with the livechat plugin version 11.1.0. +{{% /notice %}} + +### Configuration + +{{% livechat_label livechat_configuration_channel_special_chars_desc %}} + +![Screenshot of the channel options page, with several fields to configure the option "Forbid special characters".](/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/images/forbid_special_chars_configuration.png b/support/documentation/content/en/images/forbid_special_chars_configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..56f1fd8c7454ee196e2854671f0cad1578de6f3d GIT binary patch literal 101487 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
    `+JyO(#|vi-%zH}KSJ+*@KcZWj*FEjh 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\n" "Language-Team: Arabic \n" @@ -3075,6 +3075,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3222,11 +3252,6 @@ msgstr "المستندات" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4308,12 +4333,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." diff --git a/support/documentation/po/livechat.ca.po b/support/documentation/po/livechat.ca.po index ae558c71..89eb1f7c 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Catalan \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 15ae2bb3..d166afbf 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Czech \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index 6f62b6bf..fb8508ca 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -7,12 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2024-09-07 06:09+0000\n" -"Last-Translator: Victor Hampel " -"\n" -"Language-Team: German \n" +"Last-Translator: Victor Hampel \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3149,6 +3147,39 @@ msgstr "Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine N 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 +#, 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 "Der Chatbot kann automatisch Nachrichten moderieren, die verbotene Wörter 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 "" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +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." + +#. type: Title ## +#: 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/special_chars.md +#, fuzzy +#| 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 option \"Forbid special characters\".](/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 verbotenen Wörter.](/peertube-plugin-livechat/images/bot_forbidden_words.png?classes=shadow,border&height=400px \"Konfiguration der verbotenen Wörter\")" + #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/documentation/user/streamers/channel.md #, no-wrap @@ -3300,12 +3331,6 @@ msgstr "Plugin peertube-plugin-livechat nur Emojis Modus" msgid "Emojis only mode" msgstr "Nur Emojis-Modus" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -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." - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -3314,34 +3339,22 @@ 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." +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." +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 %}}\"." +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." +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 @@ -3912,8 +3925,7 @@ msgstr "Sie können Notizen einfach per Drag & Drop sortieren." #: 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" +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 @@ -4401,12 +4413,6 @@ msgstr "Konfigurieren Sie die Chat-Nutzungsbedingungen für den Kanal" msgid "Terms & conditions" msgstr "Nutzungsbedingungen" -#. type: Title ## -#: support/documentation/content/en/documentation/user/streamers/terms.md -#, no-wrap -msgid "Configuration" -msgstr "Konfiguration" - #. 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." diff --git a/support/documentation/po/livechat.el.po b/support/documentation/po/livechat.el.po index 1a506225..df38cf3a 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Greek \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.en.pot b/support/documentation/po/livechat.en.pot index 64683447..b0b163c0 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3471,6 +3471,38 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, markdown-text +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +#, markdown-text +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3633,12 +3665,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md #, markdown-text @@ -4876,12 +4902,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 diff --git a/support/documentation/po/livechat.eo.po b/support/documentation/po/livechat.eo.po index ef4cf72b..29f9de73 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Esperanto \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.es.po b/support/documentation/po/livechat.es.po index 322745cf..f8873a62 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2024-04-16 21:38+0000\n" "Last-Translator: rnek0 \n" "Language-Team: Spanish \n" @@ -3113,6 +3113,37 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3261,11 +3292,6 @@ msgstr "Redactar la documentación" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4347,13 +4373,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." diff --git a/support/documentation/po/livechat.eu.po b/support/documentation/po/livechat.eu.po index 1fed0e83..08a74ca5 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Basque \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.fa.po b/support/documentation/po/livechat.fa.po index 6e44ec0d..7e275832 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Persian \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.fi.po b/support/documentation/po/livechat.fi.po index c420841a..7940ae31 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Finnish \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.fr.po b/support/documentation/po/livechat.fr.po index 58663435..142f06b4 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2024-08-12 11:25+0000\n" "Last-Translator: John Livingston \n" "Language-Team: French \n" @@ -3225,6 +3225,41 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, 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." + +#. type: Title ## +#: 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/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 option \"Forbid special characters\".](/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 @@ -3383,13 +3418,6 @@ msgstr "Mode lent du plugin peertube-plugin-livechat" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -#, 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." - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md #, fuzzy @@ -4544,12 +4572,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." diff --git a/support/documentation/po/livechat.gd.po b/support/documentation/po/livechat.gd.po index 1a0f3e80..dae1a179 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Gaelic \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.gl.po b/support/documentation/po/livechat.gl.po index ad36ac47..c2e80e21 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Galician \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.hr.po b/support/documentation/po/livechat.hr.po index c39dcc46..7b4ce23e 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2024-07-19 17:45+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" @@ -3126,6 +3126,40 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +#, 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." + +#. type: Title ## +#: 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/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 option \"Forbid special characters\".](/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 @@ -3274,13 +3308,6 @@ msgstr "Dokumentacija dodataka" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -#, 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." - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4398,12 +4425,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." diff --git a/support/documentation/po/livechat.hu.po b/support/documentation/po/livechat.hu.po index 2580c66f..8175d0ad 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Hungarian \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.is.po b/support/documentation/po/livechat.is.po index c32ad845..cc144f7c 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Icelandic \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.it.po b/support/documentation/po/livechat.it.po index d5136725..36cc83ba 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 14:21+0000\n" "Last-Translator: John Livingston \n" "Language-Team: Italian \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.ja.po b/support/documentation/po/livechat.ja.po index 7e693bb6..5f31761d 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2024-08-29 10:38+0000\n" "Last-Translator: \"T.S\" \n" "Language-Team: Japanese \n" @@ -3168,6 +3168,38 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/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 option \"Forbid special characters\".](/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 @@ -3325,11 +3357,6 @@ msgstr "PeerTube ライブチャットプラグイン" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4464,12 +4491,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." diff --git a/support/documentation/po/livechat.kab.po b/support/documentation/po/livechat.kab.po index edc25f42..4d191fee 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kabyle \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.nb.po b/support/documentation/po/livechat.nb.po index 2851103c..a0da5c6e 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Bokmål \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.nl.po b/support/documentation/po/livechat.nl.po index 27392a03..8e298f26 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Dutch \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.nn.po b/support/documentation/po/livechat.nn.po index aa828e74..24df984f 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Nynorsk \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.oc.po b/support/documentation/po/livechat.oc.po index fb725178..7ecdf159 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Occitan \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.pl.po b/support/documentation/po/livechat.pl.po index f361b5bc..8b77a7e3 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Polish \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.pt.po b/support/documentation/po/livechat.pt.po index a678f0bc..fc7a6cea 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Portuguese \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.ru.po b/support/documentation/po/livechat.ru.po index f00efa35..0f1f83f2 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Russian \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.sq.po b/support/documentation/po/livechat.sq.po index 56f84650..52130473 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Albanian \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.sv.po b/support/documentation/po/livechat.sv.po index de128a5c..cf6d5e27 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Swedish \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.th.po b/support/documentation/po/livechat.th.po index 04f4987c..f27081fb 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Thai \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.tok.po b/support/documentation/po/livechat.tok.po index b981dde1..4bd20dbf 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Toki Pona \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.tr.po b/support/documentation/po/livechat.tr.po index 1074e40a..3ada2d80 100644 --- a/support/documentation/po/livechat.tr.po +++ b/support/documentation/po/livechat.tr.po @@ -3055,6 +3055,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3200,11 +3230,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4285,12 +4310,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." diff --git a/support/documentation/po/livechat.uk.po b/support/documentation/po/livechat.uk.po index e26fa21a..6bdb9668 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Ukrainian \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.vi.po b/support/documentation/po/livechat.vi.po index 2eeeca24..02d62604 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Vietnamese \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.zh-Hans.po b/support/documentation/po/livechat.zh-Hans.po index d35b047b..81f6ff15 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Simplified) \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." diff --git a/support/documentation/po/livechat.zh-Hant.po b/support/documentation/po/livechat.zh-Hant.po index 23107c55..8ff864f7 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-09-06 12:33+0200\n" +"POT-Creation-Date: 2024-09-07 12:38+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Traditional) \n" @@ -3074,6 +3074,36 @@ 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 +#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md +msgid "This feature comes with the livechat plugin version 11.1.0." +msgstr "" + +#. type: Title ## +#: 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/special_chars.md +msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/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 @@ -3219,11 +3249,6 @@ msgstr "" msgid "Emojis only mode" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md msgid "This mode can be usefull for example:" @@ -4304,12 +4329,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." From b5990f0c1de1983cf825ccba4168676e882a26c3 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Sat, 7 Sep 2024 12:52:25 +0200 Subject: [PATCH 014/120] Documentation: fix livechat_label regression (#514). --- support/documentation/config.toml | 4 ++++ 1 file changed, 4 insertions(+) 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 From 64a9c7be21f80c58efb8868de7b8e6e66d69f2e7 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Sat, 7 Sep 2024 12:56:35 +0200 Subject: [PATCH 015/120] Fix typo. --- languages/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/en.yml b/languages/en.yml index ca29b384..7e0e8c44 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -658,5 +658,5 @@ 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: Tolérance +livechat_configuration_channel_special_chars_tolerance_label: Tolerance livechat_configuration_channel_special_chars_tolerance_desc: Number of special characters to accept before deleting messages. From 7b3d93b290bc10a5279ec091171cd4a379801983 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Sat, 7 Sep 2024 14:49:27 +0200 Subject: [PATCH 016/120] Typescript v5 + eslint 8.57 WIP This commit also improves some type handling in the project. --- .eslintrc.json | 14 - .stylelintrc.js | 2 +- CHANGELOG.md | 3 + client/.eslintrc.json | 2 +- conversejs/.eslintrc.json | 2 +- eslint.config.mjs | 94 + package-lock.json | 5207 ++++++++--------- package.json | 20 +- server/.eslintrc.json | 40 - server/lib/bots/ctl.ts | 10 +- server/lib/configuration/bot.ts | 6 +- server/lib/configuration/channel/init.ts | 4 +- server/lib/configuration/channel/sanitize.ts | 73 +- server/lib/configuration/channel/storage.ts | 2 +- server/lib/conversejs/params.ts | 6 +- server/lib/custom-fields.ts | 4 +- server/lib/database/channel.ts | 2 +- server/lib/debug.ts | 2 +- server/lib/diagnostic/prosody.ts | 2 +- server/lib/diagnostic/utils.ts | 2 +- server/lib/diagnostic/video.ts | 2 +- server/lib/emojis/emojis.ts | 12 +- server/lib/external-auth/oidc.ts | 23 +- server/lib/federation/init.ts | 2 +- server/lib/federation/outgoing.ts | 2 +- server/lib/federation/sanitize.ts | 26 +- server/lib/firewall/config.ts | 4 +- server/lib/middlewares/async.ts | 45 +- server/lib/prosody/auth.ts | 26 +- server/lib/prosody/certificates.ts | 2 +- server/lib/prosody/config.ts | 6 +- server/lib/prosody/config/affiliations.ts | 2 +- server/lib/prosody/config/content.ts | 4 +- server/lib/prosody/ctl.ts | 16 +- server/lib/prosody/logrotate.ts | 9 +- server/lib/room-channel/room-channel-class.ts | 12 +- server/lib/routers/api/room.ts | 6 +- server/lib/routers/webchat.ts | 4 +- server/lib/rss/init.ts | 2 +- server/main.ts | 2 +- shared/.eslintrc.json | 2 +- 41 files changed, 2652 insertions(+), 3054 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs delete mode 100644 server/.eslintrc.json 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/.stylelintrc.js b/.stylelintrc.js index 1fecbcd5..290cbe75 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: [ diff --git a/CHANGELOG.md b/CHANGELOG.md index aa577cb5..d33983ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ ### Minor changes and fixes * 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. ## 11.0.1 diff --git a/client/.eslintrc.json b/client/.eslintrc.json index caad67fd..44bcc71d 100644 --- a/client/.eslintrc.json +++ b/client/.eslintrc.json @@ -5,7 +5,7 @@ "es6": true }, "extends": [ - "standard-with-typescript", + "eslint-config-love", "plugin:lit/recommended" ], "globals": {}, diff --git a/conversejs/.eslintrc.json b/conversejs/.eslintrc.json index bd9288c4..710a1196 100644 --- a/conversejs/.eslintrc.json +++ b/conversejs/.eslintrc.json @@ -5,7 +5,7 @@ "es6": true }, "extends": [ - "standard-with-typescript" + "eslint-config-love" ], "globals": {}, "parser": "@typescript-eslint/parser", diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..91fa96de --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,94 @@ +// 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 globals from 'globals' + +export default tseslint.config( + { + ignores: [ + "node_modules/", "dist/", "webpack.config.js", + "build/", + "vendor/", + "support/documentation", "support", + "build-*js", + + "shared", "client", "conversejs" + ] + }, + eslint.configs.recommended, + ...tseslint.configs.recommended, + { + ...love, + files: ['**/*.ts'] + }, + { + plugins: { + '@stylistic': stylistic + }, + rules: { + "@stylistic/semi": ["error", "never"] + } + }, + { + files: ['**/*.ts'], + rules: { + "@typescript-eslint/no-empty-function": ["error", {"allow": ["arrowFunctions"]}], + "@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_"}], + "@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", + "@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", + "max-len": [ + "error", + { + "code": 120, + "comments": 120 + } + ], + "no-unused-vars": "off" + } + }, + { + files: ['.stylelintrc.js'], + languageOptions: { + globals: globals.node + } + }, + { + files: ['server/**/*.js', 'server/**/*.ts'], // only ts? + languageOptions: { + ecmaVersion: 6, + globals: { + ...globals.node + }, + parser: typescriptParser, + parserOptions: { + ecmaVersion: 2018, + project: './server/tsconfig.json' + } + } + } +) diff --git a/package-lock.json b/package-lock.json index ca007385..6579078e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,32 +21,29 @@ "xmppjs-chat-bot": "^0.4.0" }, "devDependencies": { + "@eslint/js": "^9.10.0", "@lit-labs/motion": "^1.0.7", "@lit/context": "^1.1.1", "@lit/task": "^1.0.0", "@peertube/feed": "^5.1.0", "@peertube/peertube-types": "^5.2.0", + "@stylistic/eslint-plugin": "^2.7.2", "@tsconfig/node12": "^1.0.9", "@types/async": "^3.2.9", "@types/escape-html": "^1.0.4", + "@types/eslint__js": "^8.42.3", "@types/express": "^4.17.13", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.9", "@types/node": "^16.11.6", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", - "@typescript-eslint/eslint-plugin": "^4.29.0", - "@typescript-eslint/parser": "^4.29.0", + "@typescript-eslint/parser": "^8.4.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", + "eslint": "^8.57.0", + "eslint-config-love": "^64.0.0", + "globals": "^15.9.0", "lit": "^2.4.0", "lit-analyzer": "^1.2.1", "npm-run-all": "^4.1.5", @@ -56,22 +53,14 @@ "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", "svgo": "^2.8.0", - "typescript": "^4.3.5", + "typescript": "^5.5.4", + "typescript-eslint": "^8.4.0", "yaml": "^2.2.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 +87,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 +98,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 +150,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 +203,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 +217,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 +226,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 +275,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 +344,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 +446,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 +497,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 +518,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 +533,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 +553,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 +578,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 +601,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 +617,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 +635,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 +653,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 +671,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 +686,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 +705,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 +720,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 +734,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 +748,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 +763,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 +788,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 +802,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 +818,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 +835,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 +852,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 +871,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 +884,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 +896,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 +911,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 +923,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 +935,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 +958,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 +971,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", @@ -1807,13 +1562,6 @@ "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==", - "dev": true, - "optional": true - }, "node_modules/@esbuild/android-arm": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.2.tgz", @@ -2166,33 +1914,60 @@ "node": ">=12" } }, + "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 +1978,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.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "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.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "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.2", + "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,15 +2041,29 @@ } }, "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": { @@ -3139,6 +2944,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 +2974,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 +2993,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 +3009,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 +3030,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 +3046,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 +3058,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 +3072,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 +3085,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 +3099,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 +3113,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 +3126,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 +3138,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 +3153,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 +3167,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 +3177,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 +3189,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 +3200,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 +3214,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 +3232,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 +3252,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 +3278,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 +3291,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 +3306,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 +3322,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 +3335,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 +3348,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 +3362,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 +3375,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 +3400,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 +3419,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 +3436,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 +3448,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 +3459,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 +3473,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 +3482,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 +3494,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 +3507,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 +3519,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 +3535,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 +3553,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 +3567,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 +3579,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 +3592,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 +3606,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 +3625,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 +3637,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 +3650,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 +3664,73 @@ "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.7.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.7.2.tgz", + "integrity": "sha512-3DVLU5HEuk2pQoBmXJlzvrxbKNpu2mJ0SRqz5O/CJjyNCr12ZiPcYMEtuArTyPOk5i7bsAU44nywh1rGfe3gKQ==", + "dev": true, + "dependencies": { + "@types/eslint": "^9.6.1", + "@typescript-eslint/utils": "^8.3.0", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.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.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "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.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.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", @@ -4251,6 +3829,31 @@ "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", @@ -4319,9 +3922,9 @@ } }, "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": { @@ -4462,29 +4065,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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", + "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", "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.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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 +4097,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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", + "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", "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.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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 +4126,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,57 +4143,41 @@ } }, "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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/visitor-keys": "4.29.0" + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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/types": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.0.tgz", - "integrity": "sha512-2YJM6XfWfi8pgU2HRhTp7WgRw78TCRO3dOmSpAvIQ8MOv4B46JD2chnhpNT7Jq8j0APlIbzO1Bach734xxUl4A==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "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==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", + "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", "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/typescript-estree": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "debug": "^4.3.4", + "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 +4189,13 @@ } } }, - "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/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.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4696,20 +4206,105 @@ } } }, + "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": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "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": { + "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" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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 +4312,51 @@ "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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", "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.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.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" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-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", @@ -5118,9 +4741,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.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5154,15 +4777,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", @@ -5209,13 +4823,10 @@ "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" - } + "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/arr-diff": { "version": "4.0.0", @@ -5245,12 +4856,15 @@ } }, "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 +4877,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": { @@ -5299,15 +4914,54 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.flat": { + "node_modules/array.prototype.findlastindex": { "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==", + "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.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "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 +4989,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": { @@ -5395,12 +5050,6 @@ "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", @@ -5420,9 +5069,12 @@ } }, "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" }, @@ -5720,12 +5372,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", @@ -5816,12 +5462,18 @@ } }, "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" @@ -6444,6 +6096,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", @@ -6527,9 +6227,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 +6241,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": { @@ -6820,16 +6523,17 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "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": { @@ -6851,49 +6555,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 +6618,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", @@ -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.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "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.0", + "@humanwhocodes/config-array": "^0.11.14", + "@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": "64.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-64.0.0.tgz", + "integrity": "sha512-b223cA724uh7AomGxc4orLsAsTQloJr/dNO6+ZVmDtl6bKHoUJGPZd2aG+EoOINUdkDucHWJ+p6q/qPwshO/0w==", "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.0.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,56 +7030,13 @@ "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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } + "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-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, - "dependencies": { - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "requireindex": "^1.2.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "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==", - "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" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { + "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==", @@ -7317,86 +7045,117 @@ "semver": "bin/semver.js" } }, - "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==", + "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-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": "^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" + "eslint": ">=8.23.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", + "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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "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": "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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "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.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -7463,12 +7222,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 +7250,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 +7362,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 +7420,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 +7448,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 +7460,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" @@ -8032,9 +7827,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 +7851,7 @@ "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-xml-parser": { @@ -8185,9 +7980,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": { @@ -8352,12 +8147,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 +8173,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 +8215,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,6 +8230,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -8509,15 +8315,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.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8599,9 +8402,15 @@ } }, "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/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/hard-rejection": { @@ -8613,17 +8422,6 @@ "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/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -8641,20 +8439,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 +8472,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" @@ -8799,7 +8597,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,9 +8710,9 @@ } }, "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" @@ -8994,12 +8791,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": { @@ -9075,13 +8872,15 @@ } }, "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" @@ -9149,12 +8948,15 @@ } }, "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" @@ -9172,6 +8974,20 @@ "node": ">= 0.4" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "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": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -9233,9 +9049,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 +9061,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,6 +9094,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -9320,11 +9145,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 +9199,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" @@ -9438,13 +9266,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 +9314,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 +9342,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" } @@ -10510,7 +10337,7 @@ "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": { @@ -10801,9 +10628,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" } @@ -10829,12 +10659,12 @@ } }, "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 +10675,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,6 +10711,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -10876,14 +10738,14 @@ } }, "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" @@ -10959,17 +10821,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" @@ -11092,21 +10954,6 @@ "parse-torrent": "bin/cmd.js" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -11248,6 +11095,14 @@ "node": ">=0.10.0" } }, + "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.4" + } + }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -11354,15 +11209,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", @@ -11683,13 +11529,14 @@ } }, "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,18 +11545,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", @@ -11752,27 +11587,18 @@ "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", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "engines": { - "node": ">=0.10.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "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,6 +11623,15 @@ "node": ">=4" } }, + "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/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -11891,12 +11726,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" }, @@ -11927,14 +11762,17 @@ } }, "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" } @@ -12216,14 +12054,31 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "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", + "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-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": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12896,12 +12751,6 @@ "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", @@ -13020,13 +12869,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 +12886,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" @@ -13422,6 +13275,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 +13293,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": { @@ -13547,6 +13409,18 @@ "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", @@ -13554,38 +13428,23 @@ "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 +13489,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 +13520,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 +13539,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 +13564,39 @@ "dev": true }, "node_modules/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "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.4.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", + "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.4.0", + "@typescript-eslint/parser": "8.4.0", + "@typescript-eslint/utils": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/uid-safe": { @@ -14077,15 +13967,15 @@ "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,6 +14057,15 @@ "@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", @@ -14397,15 +14296,21 @@ "engines": { "node": ">=8" } + }, + "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, + "engines": { + "node": ">=10" + }, + "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 +14329,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 +14340,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 +14384,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 +14430,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 +14442,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 +14451,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 +14492,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 +14559,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 +14605,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 +14652,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 +14700,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 +14718,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 +14730,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 +14747,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 +14766,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 +14786,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 +14799,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 +14814,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 +14826,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 +14841,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 +14853,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 +14869,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 +14881,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 +14892,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 +14903,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 +14915,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 +14937,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 +14948,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 +14961,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 +14975,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 +14989,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 +15002,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 +15012,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 +15021,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 +15033,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 +15042,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 +15054,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 +15066,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 +15076,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": { @@ -15901,15 +15500,6 @@ "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/android-arm": { @@ -16066,78 +15656,108 @@ "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.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "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.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "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": { @@ -16638,6 +16258,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 +16277,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 +16286,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 +16296,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 +16309,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 +16327,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 +16340,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 +16352,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 +16363,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 +16373,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 +16384,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 +16395,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 +16408,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 +16420,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 +16432,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 +16443,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 +16453,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 +16462,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 +16473,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 +16484,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 +16499,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 +16518,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 +16534,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 +16544,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 +16556,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 +16569,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 +16579,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 +16589,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 +16600,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 +16610,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 +16629,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 +16645,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 +16659,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 +16668,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 +16679,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 +16690,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 +16699,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 +16708,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 +16718,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 +16727,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 +16740,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 +16755,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 +16766,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 +16775,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 +16785,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 +16796,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 +16812,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 +16821,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 +16831,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 +16842,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 +16850,45 @@ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, + "@stylistic/eslint-plugin": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.7.2.tgz", + "integrity": "sha512-3DVLU5HEuk2pQoBmXJlzvrxbKNpu2mJ0SRqz5O/CJjyNCr12ZiPcYMEtuArTyPOk5i7bsAU44nywh1rGfe3gKQ==", + "dev": true, + "requires": { + "@types/eslint": "^9.6.1", + "@typescript-eslint/utils": "^8.3.0", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true + }, + "espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "requires": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.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", @@ -17706,6 +16981,31 @@ "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", @@ -17774,9 +17074,9 @@ } }, "@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": { @@ -17916,167 +17216,182 @@ "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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", + "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", "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.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", + "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", "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.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", "dev": true, "requires": { - "@typescript-eslint/types": "4.29.0", - "@typescript-eslint/visitor-keys": "4.29.0" + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", + "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", "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.4.0", + "@typescript-eslint/utils": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", "dev": true, "requires": { - "@typescript-eslint/types": "4.29.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.4.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "@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", @@ -18368,9 +17683,9 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true }, "acorn-jsx": { @@ -18392,12 +17707,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", @@ -18435,13 +17744,10 @@ "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" - } + "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 }, "arr-diff": { "version": "4.0.0", @@ -18462,12 +17768,12 @@ "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 +17783,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" } }, @@ -18501,15 +17808,42 @@ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true }, - "array.prototype.flat": { + "array.prototype.findlastindex": { "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==", + "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.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,16 +17859,17 @@ } }, "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" } }, @@ -18568,14 +17903,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": { @@ -18591,9 +17918,12 @@ "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", @@ -18816,12 +18146,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", @@ -18892,12 +18216,15 @@ } }, "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": { @@ -19380,6 +18707,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", @@ -19443,9 +18800,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 +18811,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": { @@ -19663,13 +19020,14 @@ "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", "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": { @@ -19688,49 +19046,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 +19103,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": { @@ -19849,53 +19244,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.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "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.0", + "@humanwhocodes/config-array": "^0.11.14", + "@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.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -19942,12 +19341,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 +19355,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 +19428,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 +19454,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": "64.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-64.0.0.tgz", + "integrity": "sha512-b223cA724uh7AomGxc4orLsAsTQloJr/dNO6+ZVmDtl6bKHoUJGPZd2aG+EoOINUdkDucHWJ+p6q/qPwshO/0w==", + "dev": true, + "requires": { + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^17.0.0", + "eslint-plugin-promise": "^7.0.0", + "typescript-eslint": "^8.0.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 +19512,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 +19537,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 +19592,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 +19606,69 @@ } } }, - "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-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": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "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, - "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 +19692,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 +19718,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": { @@ -20577,9 +20008,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 +20029,7 @@ "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-xml-parser": { @@ -20693,9 +20124,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": { @@ -20809,12 +20240,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 +20257,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,12 +20281,22 @@ "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-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" } }, "get-value": { @@ -20920,13 +20356,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.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "dev": true }, "globalthis": { "version": "1.0.3", @@ -20983,9 +20416,15 @@ } }, "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 + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "hard-rejection": { @@ -20994,14 +20433,6 @@ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "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 +20444,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,11 +20462,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-symbols": "^1.0.3" } }, "has-value": { @@ -21121,7 +20552,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 +20635,9 @@ } }, "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 }, "import-fresh": { @@ -21265,12 +20695,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" } }, @@ -21324,13 +20754,12 @@ } }, "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": { @@ -21377,12 +20806,12 @@ "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": { @@ -21394,6 +20823,14 @@ "hasown": "^2.0.0" } }, + "is-data-view": { + "version": "1.0.1", + "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": { + "is-typed-array": "^1.1.13" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -21437,18 +20874,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,6 +20901,12 @@ "has-tostringtag": "^1.0.0" } }, + "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-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -21494,11 +20937,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 +20967,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": { @@ -21573,13 +21016,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 +21055,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 +21078,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" } @@ -22421,7 +21863,7 @@ "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": { @@ -22640,9 +22082,9 @@ "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", @@ -22659,16 +22101,28 @@ } }, "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,6 +22135,17 @@ "safe-array-concat": "^1.0.0" } }, + "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": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + } + }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -22691,14 +22156,14 @@ } }, "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": { @@ -22753,17 +22218,17 @@ } }, "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": { @@ -22839,21 +22304,6 @@ "simple-sha1": "^3.1.0" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -22953,6 +22403,11 @@ "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", @@ -23018,12 +22473,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", @@ -23264,21 +22713,16 @@ } }, "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", @@ -23309,24 +22753,18 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "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,6 +22780,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "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 + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -23408,12 +22852,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" }, @@ -23440,12 +22884,12 @@ } }, "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" } }, @@ -23635,14 +23079,28 @@ "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==", + "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.0.1", + "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.0" + "has-property-descriptors": "^1.0.2" } }, "set-value": { @@ -24163,12 +23621,6 @@ "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", @@ -24261,33 +23713,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": { @@ -24571,6 +24024,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 +24039,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": { @@ -24674,6 +24133,13 @@ "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", @@ -24681,32 +24147,23 @@ "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 +24196,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 +24250,22 @@ "dev": true }, "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "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.4.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", + "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.4.0", + "@typescript-eslint/parser": "8.4.0", + "@typescript-eslint/utils": "8.4.0" + } + }, "uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -25083,15 +24556,15 @@ "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,6 +24632,12 @@ "@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", @@ -25327,6 +24806,12 @@ "camelcase": "^5.0.0", "decamelize": "^1.2.0" } + }, + "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 a9e88b7d..368b7e2b 100644 --- a/package.json +++ b/package.json @@ -38,32 +38,29 @@ "xmppjs-chat-bot": "^0.4.0" }, "devDependencies": { + "@eslint/js": "^9.10.0", "@lit-labs/motion": "^1.0.7", "@lit/context": "^1.1.1", "@lit/task": "^1.0.0", "@peertube/feed": "^5.1.0", "@peertube/peertube-types": "^5.2.0", + "@stylistic/eslint-plugin": "^2.7.2", "@tsconfig/node12": "^1.0.9", "@types/async": "^3.2.9", "@types/escape-html": "^1.0.4", + "@types/eslint__js": "^8.42.3", "@types/express": "^4.17.13", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.9", "@types/node": "^16.11.6", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", - "@typescript-eslint/eslint-plugin": "^4.29.0", - "@typescript-eslint/parser": "^4.29.0", + "@typescript-eslint/parser": "^8.4.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", + "eslint": "^8.57.0", + "eslint-config-love": "^64.0.0", + "globals": "^15.9.0", "lit": "^2.4.0", "lit-analyzer": "^1.2.1", "npm-run-all": "^4.1.5", @@ -73,7 +70,8 @@ "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", "svgo": "^2.8.0", - "typescript": "^4.3.5", + "typescript": "^5.5.4", + "typescript-eslint": "^8.4.0", "yaml": "^2.2.1" }, "engine": { 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/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..c55e88e7 100644 --- a/server/lib/configuration/bot.ts +++ b/server/lib/configuration/bot.ts @@ -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 0ffebcf5..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'], diff --git a/server/lib/configuration/channel/sanitize.ts b/server/lib/configuration/channel/sanitize.ts index 5f2d1987..c064bd71 100644 --- a/server/lib/configuration/channel/sanitize.ts +++ b/server/lib/configuration/channel/sanitize.ts @@ -17,31 +17,36 @@ 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 // forbidSpecialChars comes with livechat 11.1.0 @@ -51,13 +56,12 @@ async function sanitizeChannelConfigurationOptions ( tolerance: 0, applyToModerators: false } - - if (typeof mute !== 'object') { - throw new Error('Invalid data.mute data type') + if (!_assertObjectType(botData.forbidSpecialChars)) { + throw new Error('Invalid data.forbidSpecialChars 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') } @@ -94,7 +98,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 } @@ -104,11 +112,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) } @@ -121,7 +129,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 '' } @@ -130,7 +138,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, '') @@ -141,7 +149,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 [] } @@ -162,7 +170,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 '' } @@ -171,11 +179,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)) { @@ -195,11 +203,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) } @@ -208,12 +216,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) { @@ -239,9 +252,9 @@ async function _readForbiddenWords (botData: any): Promise ): Promise { - if (typeof botData.forbidSpecialChars !== 'object') { + if (!_assertObjectType(botData.forbidSpecialChars)) { throw new Error('Invalid forbidSpecialChars data') } const result: ChannelConfigurationOptions['bot']['forbidSpecialChars'] = { @@ -253,12 +266,15 @@ async function _readForbidSpecialChars ( return result } -function _readQuotes (botData: any): ChannelConfigurationOptions['bot']['quotes'] { +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) @@ -270,12 +286,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 f99e3817..2be1f254 100644 --- a/server/lib/configuration/channel/storage.ts +++ b/server/lib/configuration/channel/storage.ts @@ -140,7 +140,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) } diff --git a/server/lib/conversejs/params.ts b/server/lib/conversejs/params.ts index 3430dabe..fee81e86 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 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..0ba918f5 100644 --- a/server/lib/debug.ts +++ b/server/lib/debug.ts @@ -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..a6c32b3a 100644 --- a/server/lib/diagnostic/prosody.ts +++ b/server/lib/diagnostic/prosody.ts @@ -235,7 +235,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..a8d48a80 100644 --- a/server/lib/diagnostic/utils.ts +++ b/server/lib/diagnostic/utils.ts @@ -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 f0bd852c..e8092043 100644 --- a/server/lib/emojis/emojis.ts +++ b/server/lib/emojis/emojis.ts @@ -114,7 +114,7 @@ export class Emojis { // File does not exist, this is normal. return undefined } - throw err + throw err as Error } return JSON.parse(content.toString()) } @@ -316,7 +316,7 @@ export class Emojis { } const result: ChannelEmojis = { - customEmojis: customEmojis + customEmojis } return [result, buffersInfos] } @@ -387,7 +387,7 @@ 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) @@ -475,15 +475,17 @@ async function _getConverseEmojiCodes (options: RegisterServerOptions): Promise< const converseEmojiDefPath = path.join(__dirname, '..', '..', '..', 'converse-emoji.json') options.peertubeHelpers.logger.debug('Loading Converse Emojis from file ' + converseEmojiDefPath) - const converseEmojis: {[key: string]: any} = JSON.parse( - await (await fs.promises.readFile(converseEmojiDefPath)).toString() + 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 !== '') ) diff --git a/server/lib/external-auth/oidc.ts b/server/lib/external-auth/oidc.ts index b2780450..7e9fc123 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) @@ -451,7 +457,7 @@ class ExternalAuthOIDC { 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.toString(), 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') } @@ -778,7 +787,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..45c4bb10 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/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/auth.ts b/server/lib/prosody/auth.ts index dfd47ab8..aca55b99 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 } } @@ -456,7 +456,7 @@ export class LivechatProsodyAuth { 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.toString(), 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 d9edee7e..c7c5f999 100644 --- a/server/lib/prosody/config.ts +++ b/server/lib/prosody/config.ts @@ -123,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 1ee44037..9944d590 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] } 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/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/room.ts b/server/lib/routers/api/room.ts index ec4df8e9..29b833be 100644 --- a/server/lib/routers/api/room.ts +++ b/server/lib/routers/api/room.ts @@ -86,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 @@ -117,7 +117,7 @@ async function initRoomApiRouter (options: RegisterServerOptions, router: Router }, await _getChannelSpecificOptions(options, channelId) ), - affiliations: affiliations + affiliations } RoomChannel.singleton().link(channelId, jid) @@ -172,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/webchat.ts b/server/lib/routers/webchat.ts index 9f2cbe31..c4b060e6 100644 --- a/server/lib/routers/webchat.ts +++ b/server/lib/routers/webchat.ts @@ -147,7 +147,7 @@ async function initWebchatRouter (options: RegisterServerOptionsV5): Promise ${message} @@ -272,7 +272,7 @@ async function initWebchatRouter (options: RegisterServerOptionsV5): 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/main.ts b/server/main.ts index f7e27547..6160c104 100644 --- a/server/main.ts +++ b/server/main.ts @@ -105,7 +105,7 @@ async function register (options: RegisterServerOptions): Promise { } ) } - ) + ).catch(() => {}) }, () => {}) } catch (error) { options.peertubeHelpers.logger.error('Error when launching Prosody: ' + (error as string)) diff --git a/shared/.eslintrc.json b/shared/.eslintrc.json index d6e49863..b11dc9f5 100644 --- a/shared/.eslintrc.json +++ b/shared/.eslintrc.json @@ -5,7 +5,7 @@ "es6": true }, "extends": [ - "standard-with-typescript" + "eslint-config-love" ], "globals": {}, "parser": "@typescript-eslint/parser", From c010758164170f19873debd8a3813a79a6c7ed79 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 9 Sep 2024 18:47:21 +0200 Subject: [PATCH 017/120] eslint 8.57 WIP: * tweaking rules * fixing issues --- .stylelintrc.js | 2 +- client/admin-plugin-client-plugin.ts | 5 +- client/common-client-plugin.ts | 2 +- .../admin/firewall/elements/admin-firewall.ts | 4 +- .../firewall/templates/admin-firewall.ts | 3 + .../elements/channel-configuration.ts | 4 +- .../configuration/elements/channel-emojis.ts | 8 +- .../configuration/elements/channel-home.ts | 3 + .../configuration/elements/channel-tabs.ts | 3 + .../templates/channel-configuration.ts | 7 +- .../elements/templates/channel-emojis.ts | 3 + .../configuration/services/channel-details.ts | 26 ++-- client/common/lib/buttons.ts | 4 +- client/common/lib/directives/translation.ts | 6 +- .../elements/configuration-section-header.ts | 3 + .../common/lib/elements/dynamic-table-form.ts | 87 +++++------ client/common/lib/elements/help-button.ts | 2 +- .../common/lib/elements/image-file-input.ts | 4 + client/common/lib/elements/tags-input.ts | 20 ++- .../lib/elements/templates/token-list.ts | 7 +- client/common/lib/elements/token-list.ts | 6 +- client/common/lib/models/validation.ts | 2 +- client/common/videowatch/chat.ts | 11 +- .../common/videowatch/elements/share-chat.ts | 20 +-- .../elements/templates/share-chat.ts | 3 + client/common/videowatch/share.ts | 3 +- client/common/videowatch/uri.ts | 3 +- client/settings.ts | 7 +- client/utils/conversejs.ts | 10 +- client/utils/uri.ts | 2 +- eslint.config.mjs | 135 +++++++++++++----- package-lock.json | 74 ++++++++++ package.json | 5 +- server/lib/configuration/bot.ts | 2 +- server/lib/configuration/channel/storage.ts | 7 +- server/lib/conversejs/params.ts | 16 +-- server/lib/debug.ts | 10 +- server/lib/diagnostic/prosody.ts | 3 +- server/lib/diagnostic/utils.ts | 4 +- server/lib/emojis/emojis.ts | 9 +- server/lib/federation/sanitize.ts | 2 +- server/lib/settings.ts | 2 +- 42 files changed, 361 insertions(+), 178 deletions(-) diff --git a/.stylelintrc.js b/.stylelintrc.js index 290cbe75..c79d5b56 100644 --- a/.stylelintrc.js +++ b/.stylelintrc.js @@ -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/client/admin-plugin-client-plugin.ts b/client/admin-plugin-client-plugin.ts index 7b0f872b..3d4f719f 100644 --- a/client/admin-plugin-client-plugin.ts +++ b/client/admin-plugin-client-plugin.ts @@ -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..067193f9 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,7 +101,7 @@ 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}`] return validationErrorTypes ? (validationErrorTypes.length ? { 'is-invalid': true } : { 'is-valid': true }) : {} diff --git a/client/common/admin/firewall/templates/admin-firewall.ts b/client/common/admin/firewall/templates/admin-firewall.ts index ffa430c9..46a266d8 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' diff --git a/client/common/configuration/elements/channel-configuration.ts b/client/common/configuration/elements/channel-configuration.ts index 7e6edd66..01c5f812 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,7 +113,7 @@ 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}`] return validationErrorTypes ? (validationErrorTypes.length ? { 'is-invalid': true } : { 'is-valid': true }) : {} diff --git a/client/common/configuration/elements/channel-emojis.ts b/client/common/configuration/elements/channel-emojis.ts index e7e09de8..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,7 +250,7 @@ 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 } 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 33453a4c..ecae85a3 100644 --- a/client/common/configuration/elements/templates/channel-configuration.ts +++ b/client/common/configuration/elements/templates/channel-configuration.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 { ChannelConfigurationElement } from '../channel-configuration' import type { DynamicFormHeader, DynamicFormSchema } from '../../../lib/elements/dynamic-table-form' import { ptTr } from '../../../lib/directives/translation' @@ -9,7 +12,7 @@ import { html, TemplateResult } from 'lit' import { classMap } from 'lit/directives/class-map.js' 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), @@ -57,7 +60,7 @@ export function tplChannelConfiguration (el: ChannelConfigurationElement): Templ } } } - const tableSchema: {[key: string]: DynamicFormSchema} = { + const tableSchema: Record = { forbiddenWords: { entries: { inputType: 'tags', diff --git a/client/common/configuration/elements/templates/channel-emojis.ts b/client/common/configuration/elements/templates/channel-emojis.ts index ae354500..8984f8ab 100644 --- a/client/common/configuration/elements/templates/channel-emojis.ts +++ b/client/common/configuration/elements/templates/channel-emojis.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 { ChannelEmojisElement } from '../channel-emojis' import type { DynamicFormHeader, DynamicFormSchema } from '../../../lib/elements/dynamic-table-form' import { maxEmojisPerChannel } from 'shared/lib/emojis' diff --git a/client/common/configuration/services/channel-details.ts b/client/common/configuration/services/channel-details.ts index 4c1695a7..21d3e5fd 100644 --- a/client/common/configuration/services/channel-details.ts +++ b/client/common/configuration/services/channel-details.ts @@ -162,7 +162,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. @@ -196,10 +197,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 @@ -311,10 +313,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, @@ -330,11 +333,12 @@ export class ChannelDetailsService { } public async enableEmojisOnlyModeOnAllRooms (channelId: number): Promise { + const url = getBaseRoute(this._registerClientOptions) + + '/api/configuration/channel/emojis/' + + encodeURIComponent(channelId) + + '/enable_emoji_only' const response = await fetch( - getBaseRoute(this._registerClientOptions) + - '/api/configuration/channel/emojis/' + - encodeURIComponent(channelId) + - '/enable_emoji_only', + url, { method: 'POST', headers: this._headers 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/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/eslint.config.mjs b/eslint.config.mjs index 91fa96de..aae805eb 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -2,23 +2,30 @@ // // SPDX-License-Identifier: AGPL-3.0-only +// FIXME: +// * lint shared +// * lint conversejs +// * use eslint-plugin-lit + 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", + 'node_modules/', 'dist/', 'webpack.config.js', + 'build/', + 'vendor/', + 'support/documentation', 'support', + 'build-*js', - "shared", "client", "conversejs" + 'shared', + 'conversejs' ] }, eslint.configs.recommended, @@ -27,48 +34,57 @@ export default tseslint.config( ...love, files: ['**/*.ts'] }, + stylistic.configs.customize({ + quotes: 'single', + semi: false, + commaDangle: 'never', + blockSpacing: true, + braceStyle: '1tbs', + indent: 2, + quoteProps: 'as-needed' + }), { - plugins: { - '@stylistic': stylistic - }, rules: { - "@stylistic/semi": ["error", "never"] + '@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"]}], - "@typescript-eslint/no-unused-vars": [2, {"argsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_"}], - "@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", - "@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", - "max-len": [ - "error", + '@typescript-eslint/no-empty-function': ['error', { allow: ['arrowFunctions'] }], + '@typescript-eslint/no-unused-vars': [2, { 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', + 'max-len': [ + 'error', { - "code": 120, - "comments": 120 + code: 120, + comments: 120 } ], - "no-unused-vars": "off" + 'no-unused-vars': 'off' } }, { @@ -90,5 +106,48 @@ export default tseslint.config( project: './server/tsconfig.json' } } + }, + { + files: ['shared/**/*.js', 'shared/**/*.ts'], // only ts? + languageOptions: { + ecmaVersion: 6, + globals: { + ...globals.es2016, + ...globals.browser + }, + parser: typescriptParser, + parserOptions: { + ecmaVersion: 2018, + project: [ + './server/tsconfig.json', + './client/tsconfig.json' + ], + projectService: { + allowDefaultProject: 'shared/**/*.ts', + defaultProject: './server/tsconfig.json' + } + } + } + }, + { + files: ['client/**/*.js', 'client/**/*.ts'], // only ts? + languageOptions: { + ecmaVersion: 6, + globals: { + ...globals.browser + }, + parser: typescriptParser, + parserOptions: { + ecmaVersion: 2018, + project: './client/tsconfig.json' + } + }, + // FIXME: not sure elintLit works. + plugins: { + ...eslintLit.configs['flat/recommended'].plugins + }, + rules: { + ...eslintLit.configs['flat/recommended'].rules + } } ) diff --git a/package-lock.json b/package-lock.json index 6579078e..6ceac724 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "esbuild": "^0.16.1", "eslint": "^8.57.0", "eslint-config-love": "^64.0.0", + "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", "lit": "^2.4.0", "lit-analyzer": "^1.2.1", @@ -7045,6 +7046,23 @@ "semver": "bin/semver.js" } }, + "node_modules/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, + "dependencies": { + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "requireindex": "^1.2.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "eslint": ">= 5" + } + }, "node_modules/eslint-plugin-n": { "version": "17.10.2", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", @@ -10954,6 +10972,21 @@ "parse-torrent": "bin/cmd.js" } }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -11587,6 +11620,15 @@ "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", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -19606,6 +19648,17 @@ } } }, + "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": { + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "requireindex": "^1.2.0" + } + }, "eslint-plugin-n": { "version": "17.10.2", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", @@ -22304,6 +22357,21 @@ "simple-sha1": "^3.1.0" } }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -22753,6 +22821,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", diff --git a/package.json b/package.json index 368b7e2b..9b178d60 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "esbuild": "^0.16.1", "eslint": "^8.57.0", "eslint-config-love": "^64.0.0", + "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", "lit": "^2.4.0", "lit-analyzer": "^1.2.1", @@ -106,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/server/lib/configuration/bot.ts b/server/lib/configuration/bot.ts index c55e88e7..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 diff --git a/server/lib/configuration/channel/storage.ts b/server/lib/configuration/channel/storage.ts index 2be1f254..096700d0 100644 --- a/server/lib/configuration/channel/storage.ts +++ b/server/lib/configuration/channel/storage.ts @@ -187,8 +187,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. @@ -201,7 +201,8 @@ function _getForbiddenWordsHandler ( } // FIXME: this solution wont work for non-latin charsets. return s - }).join(')|(?:') + ')' + } + ).join(')|(?:') + ')' } if (forbiddenWords.reason) { diff --git a/server/lib/conversejs/params.ts b/server/lib/conversejs/params.ts index fee81e86..e2b3641f 100644 --- a/server/lib/conversejs/params.ts +++ b/server/lib/conversejs/params.ts @@ -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/debug.ts b/server/lib/debug.ts index 0ba918f5..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' diff --git a/server/lib/diagnostic/prosody.ts b/server/lib/diagnostic/prosody.ts index a6c32b3a..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.' diff --git a/server/lib/diagnostic/utils.ts b/server/lib/diagnostic/utils.ts index a8d48a80..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' diff --git a/server/lib/emojis/emojis.ts b/server/lib/emojis/emojis.ts index e8092043..359edd20 100644 --- a/server/lib/emojis/emojis.ts +++ b/server/lib/emojis/emojis.ts @@ -78,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 } diff --git a/server/lib/federation/sanitize.ts b/server/lib/federation/sanitize.ts index 45c4bb10..35275e2a 100644 --- a/server/lib/federation/sanitize.ts +++ b/server/lib/federation/sanitize.ts @@ -289,7 +289,7 @@ function _sanitizePeertubeLiveChatInfosV0 ( logger.debug('We are have to migrate data from the old JSONLD format') if (chatInfos === false) { return false } - if (!_assertObjectType(chatInfos)) { return false} + if (!_assertObjectType(chatInfos)) { return false } if (chatInfos.type !== 'xmpp') { return false } if (typeof chatInfos.jid !== 'string') { return false } diff --git a/server/lib/settings.ts b/server/lib/settings.ts index 03805924..1e463809 100644 --- a/server/lib/settings.ts +++ b/server/lib/settings.ts @@ -529,7 +529,7 @@ function initThemingSettings ({ registerSetting }: RegisterServerOptions): void { value: 'peertube', label: loc('converse_theme_option_peertube') }, { value: 'default', label: loc('converse_theme_option_default') }, { value: 'cyberpunk', label: loc('converse_theme_option_cyberpunk') } - ] as Array<{value: ConverseJSTheme, label: string}>, + ] as Array<{ value: ConverseJSTheme, label: string }>, descriptionHTML: loc('converse_theme_description') }) From fd27105c2c401e44aa66c393c072657db2584fb6 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 9 Sep 2024 20:01:25 +0200 Subject: [PATCH 018/120] eslint 8.57 WIP: * tweaking some more rules. * fixing linting. --- conversejs/build-conversejs-patch-i18n.js | 1 + conversejs/builtin.ts | 12 ++-- .../templates/muc-mam-search-app.js | 3 + .../templates/muc-mam-search-message.js | 3 + .../templates/muc-mam-search-occupant.js | 3 + .../plugins/notes/templates/muc-note-app.js | 3 + .../notes/templates/muc-note-occupant.js | 3 + .../plugins/notes/templates/muc-note.js | 3 + .../plugins/notes/templates/muc-notes.js | 3 + .../custom/plugins/poll/modals/poll-form.js | 3 + .../plugins/poll/templates/poll-form.js | 3 + .../custom/plugins/poll/templates/poll.js | 3 + .../tasks/modals/templates/pick-task-list.js | 3 + .../plugins/tasks/templates/muc-task-app.js | 3 + .../plugins/tasks/templates/muc-task-list.js | 3 + .../plugins/tasks/templates/muc-task-lists.js | 3 + .../plugins/tasks/templates/muc-task.js | 6 +- .../plugins/terms/components/muc-terms.js | 3 + .../livechat-external-login-modal.js | 8 ++- .../custom/templates/muc-bottom-panel.js | 3 + conversejs/custom/templates/muc-chatarea.js | 3 + conversejs/custom/templates/muc-head.js | 3 + conversejs/custom/templates/muc.js | 3 + conversejs/lib/auth.ts | 6 +- conversejs/lib/plugins/livechat-emojis.ts | 10 +-- .../livechat-specific/chatroom-message.ts | 3 +- .../lib/plugins/livechat-specific/chatroom.ts | 6 +- .../livechat-specific/message-action.ts | 2 +- .../lib/plugins/livechat-specific/toolbar.ts | 3 + .../lib/plugins/livechat-specific/utils.ts | 2 +- .../lib/plugins/livechat-viewer-mode.ts | 10 +-- conversejs/lib/plugins/slow-mode.ts | 8 ++- conversejs/lib/utils.ts | 2 +- eslint.config.mjs | 65 ++++++++++++++++--- 34 files changed, 165 insertions(+), 36 deletions(-) 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/builtin.ts b/conversejs/builtin.ts index 9cb1cc5a..28cfc320 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' @@ -39,7 +41,7 @@ declare global { } initConversePlugins: typeof initConversePlugins initConverse: typeof initConverse - reconnectConverse?: (room: string) => void + reconnectConverse?: (params: any) => void externalAuthGetResult?: (data: ExternalAuthResult) => void } } @@ -86,7 +88,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 +123,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/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/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 b1648b09..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' 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/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/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/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/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/eslint.config.mjs b/eslint.config.mjs index aae805eb..8d402c76 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -6,6 +6,7 @@ // * lint shared // * lint conversejs // * use eslint-plugin-lit +// * delete old .eslintrc.json files import love from 'eslint-config-love' import eslint from '@eslint/js' @@ -24,8 +25,7 @@ export default tseslint.config( 'support/documentation', 'support', 'build-*js', - 'shared', - 'conversejs' + 'shared' // FIXME ] }, eslint.configs.recommended, @@ -55,7 +55,8 @@ export default tseslint.config( files: ['**/*.ts'], rules: { '@typescript-eslint/no-empty-function': ['error', { allow: ['arrowFunctions'] }], - '@typescript-eslint/no-unused-vars': [2, { argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }], + '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', @@ -83,8 +84,45 @@ export default tseslint.config( code: 120, comments: 120 } - ], - 'no-unused-vars': 'off' + ] + } + }, + { + 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', + + 'max-params': 'off', + 'init-declarations': 'off', + 'no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }], + 'max-len': [ + 'error', + { + code: 120, + comments: 120 + } + ] } }, { @@ -108,7 +146,7 @@ export default tseslint.config( } }, { - files: ['shared/**/*.js', 'shared/**/*.ts'], // only ts? + files: ['shared/**/*.js', 'shared/**/*.ts'], languageOptions: { ecmaVersion: 6, globals: { @@ -130,7 +168,7 @@ export default tseslint.config( } }, { - files: ['client/**/*.js', 'client/**/*.ts'], // only ts? + files: ['client/**/*.js', 'client/**/*.ts', 'conversejs/**/*.js', 'conversejs/**/*.ts'], languageOptions: { ecmaVersion: 6, globals: { @@ -139,7 +177,10 @@ export default tseslint.config( parser: typescriptParser, parserOptions: { ecmaVersion: 2018, - project: './client/tsconfig.json' + project: [ + './client/tsconfig.json', + './conversejs/tsconfig.json' + ] } }, // FIXME: not sure elintLit works. @@ -149,5 +190,13 @@ export default tseslint.config( rules: { ...eslintLit.configs['flat/recommended'].rules } + }, + { + files: ['conversejs/build-*.js', 'conversejs/loc.keys.js', 'conversejs/custom/webpack.livechat.js'], + languageOptions: { + globals: { + ...globals.node + } + } } ) From edca1be70ab73e5aeb30da4e1860d16151db8479 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 9 Sep 2024 20:37:45 +0200 Subject: [PATCH 019/120] Final eslint 8.57 adjustements. There are still some FIXME, but should be enought for now. --- .eslintrc.json.license | 3 --- client/.eslintrc.json | 41 ------------------------------- client/.eslintrc.json.license | 3 --- conversejs/.eslintrc.json | 40 ------------------------------ conversejs/.eslintrc.json.license | 3 --- eslint.config.mjs | 29 ++++++++++------------ server/.eslintrc.json.license | 3 --- shared/.eslintrc.json | 41 ------------------------------- shared/.eslintrc.json.license | 3 --- shared/lib/video.ts | 2 +- 10 files changed, 14 insertions(+), 154 deletions(-) delete mode 100644 .eslintrc.json.license delete mode 100644 client/.eslintrc.json delete mode 100644 client/.eslintrc.json.license delete mode 100644 conversejs/.eslintrc.json delete mode 100644 conversejs/.eslintrc.json.license delete mode 100644 server/.eslintrc.json.license delete mode 100644 shared/.eslintrc.json delete mode 100644 shared/.eslintrc.json.license diff --git a/.eslintrc.json.license b/.eslintrc.json.license deleted file mode 100644 index b253ad42..00000000 --- a/.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/.eslintrc.json b/client/.eslintrc.json deleted file mode 100644 index 44bcc71d..00000000 --- a/client/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "eslint-config-love", - "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/conversejs/.eslintrc.json b/conversejs/.eslintrc.json deleted file mode 100644 index 710a1196..00000000 --- a/conversejs/.eslintrc.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "eslint-config-love" - ], - "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/eslint.config.mjs b/eslint.config.mjs index 8d402c76..3189e363 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -2,12 +2,6 @@ // // SPDX-License-Identifier: AGPL-3.0-only -// FIXME: -// * lint shared -// * lint conversejs -// * use eslint-plugin-lit -// * delete old .eslintrc.json files - import love from 'eslint-config-love' import eslint from '@eslint/js' import tseslint from 'typescript-eslint' @@ -23,9 +17,7 @@ export default tseslint.config( 'build/', 'vendor/', 'support/documentation', 'support', - 'build-*js', - - 'shared' // FIXME + 'build-*js' ] }, eslint.configs.recommended, @@ -132,7 +124,10 @@ export default tseslint.config( } }, { - files: ['server/**/*.js', 'server/**/*.ts'], // only ts? + files: [ + 'server/**/*.js', 'server/**/*.ts' + // 'shared/**/*.js', 'shared/**/*.ts' // we also inlcude shared files here. + ], languageOptions: { ecmaVersion: 6, globals: { @@ -157,13 +152,15 @@ export default tseslint.config( parserOptions: { ecmaVersion: 2018, project: [ - './server/tsconfig.json', - './client/tsconfig.json' + './server/tsconfig.json' + // './client/tsconfig.json' // FIXME: dont really know what is necessary here. ], - projectService: { - allowDefaultProject: 'shared/**/*.ts', - defaultProject: './server/tsconfig.json' - } + // FIXME: how to make projectService work? + projectService: false + // projectService: { + // allowDefaultProject: ['shared/lib/*.js', 'shared/lib/*.ts'], + // defaultProject: './server/tsconfig.json' + // } } } }, 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/shared/.eslintrc.json b/shared/.eslintrc.json deleted file mode 100644 index b11dc9f5..00000000 --- a/shared/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "eslint-config-love" - ], - "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/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 } From c561851bb6f876ffcd16841ef337544d63547c80 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 9 Sep 2024 21:21:44 +0200 Subject: [PATCH 020/120] Fix a regression in OIDC handling. --- server/lib/external-auth/oidc.ts | 6 +++--- server/lib/prosody/auth.ts | 10 +++++++--- server/lib/routers/oidc.ts | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/server/lib/external-auth/oidc.ts b/server/lib/external-auth/oidc.ts index 7e9fc123..257e27d9 100644 --- a/server/lib/external-auth/oidc.ts +++ b/server/lib/external-auth/oidc.ts @@ -453,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.toString(), 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) } /** diff --git a/server/lib/prosody/auth.ts b/server/lib/prosody/auth.ts index aca55b99..a47dff95 100644 --- a/server/lib/prosody/auth.ts +++ b/server/lib/prosody/auth.ts @@ -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.toString(), 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/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() } } From 4b5f83c45f6e852b2bdfc52cc820c7835ddb5d68 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 09:49:21 +0200 Subject: [PATCH 021/120] Updating dependencies. --- CHANGELOG.md | 1 + .../styles/configuration/_configuration.scss | 12 +- assets/styles/elements/_token-list.scss | 4 +- .../firewall/templates/admin-firewall.ts | 2 +- .../elements/templates/channel-emojis.ts | 2 +- client/common/lib/elements/livechat.ts | 2 +- eslint.config.mjs | 8 +- package-lock.json | 4761 +++++------------ package.json | 40 +- server/lib/routers/webchat.ts | 6 +- 10 files changed, 1331 insertions(+), 3507 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d33983ce..f9c6f20c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * Using Typescript 5.5.4, and Eslint 8.57.0 (with new ruleset). * Fix race condition in bot/ctl. * Various type improvements. +* Update dependencies. ## 11.0.1 diff --git a/assets/styles/configuration/_configuration.scss b/assets/styles/configuration/_configuration.scss index 99094c4b..bd21e761 100644 --- a/assets/styles/configuration/_configuration.scss +++ b/assets/styles/configuration/_configuration.scss @@ -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(--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/_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/client/common/admin/firewall/templates/admin-firewall.ts b/client/common/admin/firewall/templates/admin-firewall.ts index 46a266d8..0d929d60 100644 --- a/client/common/admin/firewall/templates/admin-firewall.ts +++ b/client/common/admin/firewall/templates/admin-firewall.ts @@ -67,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/templates/channel-emojis.ts b/client/common/configuration/elements/templates/channel-emojis.ts index 8984f8ab..e0764452 100644 --- a/client/common/configuration/elements/templates/channel-emojis.ts +++ b/client/common/configuration/elements/templates/channel-emojis.ts @@ -90,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) { diff --git a/client/common/lib/elements/livechat.ts b/client/common/lib/elements/livechat.ts index 16ffda76..ba4bfc00 100644 --- a/client/common/lib/elements/livechat.ts +++ b/client/common/lib/elements/livechat.ts @@ -26,7 +26,7 @@ export class LivechatElement extends LitElement { this.logger = this.ptContext.logger.createLogger(this.tagName.toLowerCase()) } - protected override createRenderRoot = (): Element | ShadowRoot => { + protected override createRenderRoot = (): HTMLElement | DocumentFragment => { return this } } diff --git a/eslint.config.mjs b/eslint.config.mjs index 3189e363..4dbd21f0 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -124,10 +124,7 @@ export default tseslint.config( } }, { - files: [ - 'server/**/*.js', 'server/**/*.ts' - // 'shared/**/*.js', 'shared/**/*.ts' // we also inlcude shared files here. - ], + files: ['server/**/*.js', 'server/**/*.ts'], languageOptions: { ecmaVersion: 6, globals: { @@ -136,7 +133,8 @@ export default tseslint.config( parser: typescriptParser, parserOptions: { ecmaVersion: 2018, - project: './server/tsconfig.json' + project: './server/tsconfig.json', + projectService: true } } }, diff --git a/package-lock.json b/package-lock.json index 6ceac724..b9ffec92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,53 +10,53 @@ "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", "http-proxy": "^1.18.1", "log-rotate": "^0.2.8", - "openid-client": "^5.6.5", - "validate-color": "^2.2.1", + "openid-client": "^5.7.0", + "validate-color": "^2.2.4", "xmppjs-chat-bot": "^0.4.0" }, "devDependencies": { "@eslint/js": "^9.10.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.2", + "@lit/task": "^1.0.1", + "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@stylistic/eslint-plugin": "^2.7.2", + "@stylistic/eslint-plugin": "^2.8.0", "@tsconfig/node12": "^1.0.9", - "@types/async": "^3.2.9", + "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", - "@types/express": "^4.17.13", + "@types/express": "^4.17.21", "@types/got": "^9.6.12", - "@types/http-proxy": "^1.17.9", + "@types/http-proxy": "^1.17.15", "@types/node": "^16.11.6", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", - "commander": "^11.0.0", - "esbuild": "^0.16.1", + "commander": "^12.1.0", + "esbuild": "^0.23.1", "eslint": "^8.57.0", "eslint-config-love": "^64.0.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", - "lit": "^2.4.0", - "lit-analyzer": "^1.2.1", + "lit": "^3.2.0", + "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.43.4", - "sharp": "^0.33.2", + "sass": "^1.78.0", + "sharp": "^0.33.5", "stylelint": "^14.0.1", "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", - "svgo": "^2.8.0", + "svgo": "^3.3.2", "typescript": "^5.5.4", - "typescript-eslint": "^8.4.0", - "yaml": "^2.2.1" + "typescript-eslint": "^8.5.0", + "yaml": "^2.5.1" }, "engines": { "npm": ">=7" @@ -1554,19 +1554,35 @@ } }, "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/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": 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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", "cpu": [ "arm" ], @@ -1576,13 +1592,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", "cpu": [ "arm64" ], @@ -1592,13 +1608,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", "cpu": [ "x64" ], @@ -1608,13 +1624,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", "cpu": [ "arm64" ], @@ -1624,13 +1640,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", "cpu": [ "x64" ], @@ -1640,13 +1656,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", "cpu": [ "arm64" ], @@ -1656,13 +1672,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", "cpu": [ "x64" ], @@ -1672,13 +1688,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", "cpu": [ "arm" ], @@ -1688,13 +1704,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", "cpu": [ "arm64" ], @@ -1704,13 +1720,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", "cpu": [ "ia32" ], @@ -1720,13 +1736,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", "cpu": [ "loong64" ], @@ -1736,13 +1752,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", "cpu": [ "mips64el" ], @@ -1752,13 +1768,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", "cpu": [ "ppc64" ], @@ -1768,13 +1784,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", "cpu": [ "riscv64" ], @@ -1784,13 +1800,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", "cpu": [ "s390x" ], @@ -1800,13 +1816,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", "cpu": [ "x64" ], @@ -1816,13 +1832,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", "cpu": [ "x64" ], @@ -1832,13 +1848,29 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", "cpu": [ "x64" ], @@ -1848,13 +1880,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", "cpu": [ "x64" ], @@ -1864,13 +1896,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", "cpu": [ "arm64" ], @@ -1880,13 +1912,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", "cpu": [ "ia32" ], @@ -1896,13 +1928,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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", "cpu": [ "x64" ], @@ -1912,7 +1944,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -2068,9 +2100,9 @@ "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" ], @@ -2080,23 +2112,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" ], @@ -2106,23 +2134,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" ], @@ -2131,20 +2155,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" ], @@ -2153,20 +2171,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" ], @@ -2175,20 +2187,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" ], @@ -2197,20 +2203,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" ], @@ -2219,20 +2219,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" ], @@ -2241,20 +2235,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" ], @@ -2263,20 +2251,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" ], @@ -2285,20 +2267,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" ], @@ -2308,23 +2284,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" ], @@ -2334,23 +2306,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" ], @@ -2360,23 +2328,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" ], @@ -2386,23 +2350,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" ], @@ -2412,23 +2372,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" ], @@ -2438,45 +2394,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" ], @@ -2486,19 +2435,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" ], @@ -2508,10 +2454,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" @@ -2575,37 +2518,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", @@ -2613,9 +2525,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.2", + "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.2.tgz", + "integrity": "sha512-S0nw2C6Tkm7fVX5TGYqeROGD+Z9Coa2iFpW+ysYBDH3YvCqOY3wVQvSgwbaliLJkjTnSEYCBe9qFqKV8WUFpVw==", "dev": true, "dependencies": { "@lit/reactive-element": "^1.6.2 || ^2.0.0" @@ -2631,27 +2543,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", @@ -2860,9 +2759,9 @@ } }, "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" @@ -3672,13 +3571,12 @@ "dev": true }, "node_modules/@stylistic/eslint-plugin": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.7.2.tgz", - "integrity": "sha512-3DVLU5HEuk2pQoBmXJlzvrxbKNpu2mJ0SRqz5O/CJjyNCr12ZiPcYMEtuArTyPOk5i7bsAU44nywh1rGfe3gKQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.8.0.tgz", + "integrity": "sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==", "dev": true, "dependencies": { - "@types/eslint": "^9.6.1", - "@typescript-eslint/utils": "^8.3.0", + "@typescript-eslint/utils": "^8.4.0", "eslint-visitor-keys": "^4.0.0", "espree": "^10.1.0", "estraverse": "^5.3.0", @@ -3759,9 +3657,9 @@ "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": { @@ -3856,26 +3754,27 @@ "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": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@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": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/fluent-ffmpeg": { @@ -3914,9 +3813,9 @@ "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": "*" @@ -4021,6 +3920,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", @@ -4066,16 +3975,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", - "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", + "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/type-utils": "8.4.0", - "@typescript-eslint/utils": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/type-utils": "8.5.0", + "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4126,6 +4035,90 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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/parser/node_modules/@typescript-eslint/types": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -4143,20 +4136,47 @@ } } }, + "node_modules/@typescript-eslint/parser/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/parser/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/parser/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/@typescript-eslint/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", + "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0" + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4167,13 +4187,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", - "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", + "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/utils": "8.5.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4214,9 +4234,9 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", + "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4227,13 +4247,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", + "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4314,15 +4334,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", - "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0" + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4336,12 +4356,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", + "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/types": "8.5.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4372,6 +4392,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", @@ -4829,33 +4855,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "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" - } - }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -4906,15 +4905,6 @@ "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array.prototype.findlastindex": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", @@ -5019,15 +5009,6 @@ "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", @@ -5038,9 +5019,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", @@ -5057,18 +5038,6 @@ "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.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -5101,41 +5070,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", @@ -5236,7 +5175,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": { @@ -5403,26 +5342,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", @@ -5480,12 +5399,6 @@ "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", @@ -5611,55 +5524,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": { @@ -5720,19 +5596,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", @@ -5795,11 +5658,12 @@ } }, "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "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": { @@ -5807,15 +5671,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", @@ -5897,15 +5752,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", @@ -6023,38 +5869,38 @@ } }, "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" @@ -6076,17 +5922,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", @@ -6155,9 +6022,9 @@ } }, "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" } @@ -6193,15 +6060,6 @@ "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", @@ -6273,19 +6131,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", @@ -6324,9 +6169,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" @@ -6371,23 +6216,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": [ { @@ -6397,12 +6242,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" @@ -6412,14 +6257,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" @@ -6538,10 +6383,13 @@ } }, "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" } @@ -6737,40 +6585,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.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "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.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, "node_modules/escalade": { @@ -7610,70 +7460,6 @@ "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", @@ -7773,71 +7559,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", @@ -8049,15 +7770,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", @@ -8081,18 +7793,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", @@ -8260,15 +7960,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -8300,12 +7991,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", @@ -8503,69 +8188,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", @@ -8736,6 +8358,12 @@ "node": ">= 4" } }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -8877,18 +8505,6 @@ "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.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -8948,12 +8564,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", @@ -8980,18 +8590,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "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, - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/is-data-view": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", @@ -9017,31 +8615,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", @@ -9241,15 +8814,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", @@ -9271,9 +8835,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" } @@ -9421,257 +8985,62 @@ "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.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz", + "integrity": "sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==", "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", @@ -9828,15 +9197,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", @@ -9849,18 +9209,6 @@ "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", @@ -9882,9 +9230,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": { @@ -10143,19 +9491,6 @@ "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", @@ -10330,28 +9665,6 @@ "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", @@ -10566,9 +9879,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" @@ -10586,57 +9899,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", @@ -10664,18 +9926,6 @@ "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.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", @@ -10743,18 +9993,6 @@ "node": ">= 0.4" } }, - "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==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", @@ -10825,11 +10063,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" @@ -10996,21 +10234,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", @@ -11119,15 +10342,6 @@ "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, - "engines": { - "node": ">=0.10.0" - } - }, "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", @@ -11548,19 +10762,6 @@ "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.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -11578,24 +10779,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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", @@ -11614,12 +10797,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", @@ -11674,13 +10851,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "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/responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -11689,15 +10859,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", @@ -11794,15 +10955,6 @@ "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.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", @@ -11870,18 +11022,20 @@ } }, "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.78.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", + "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=14.0.0" } }, "node_modules/sax": { @@ -12090,12 +11244,6 @@ "node": ">= 0.8.0" } }, - "node_modules/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 - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -12126,42 +11274,6 @@ "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, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "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_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -12192,43 +11304,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": { @@ -12263,13 +11374,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" }, @@ -12468,130 +11576,6 @@ "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", @@ -12719,20 +11703,6 @@ "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", @@ -12742,13 +11712,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", @@ -12781,25 +11744,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/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", @@ -12815,44 +11759,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", @@ -13250,24 +12156,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": { @@ -13365,45 +12275,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", @@ -13464,9 +12335,9 @@ } }, "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": { @@ -13619,14 +12490,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", - "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz", + "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.4.0", - "@typescript-eslint/parser": "8.4.0", - "@typescript-eslint/utils": "8.4.0" + "@typescript-eslint/eslint-plugin": "8.5.0", + "@typescript-eslint/parser": "8.5.0", + "@typescript-eslint/utils": "8.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -13641,6 +12512,57 @@ } } }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", + "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "debug": "^4.3.4" + }, + "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/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/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/uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -13667,30 +12589,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", @@ -13709,54 +12607,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", @@ -13795,22 +12645,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", @@ -13852,9 +12686,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", @@ -13933,15 +12767,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", @@ -13949,16 +12783,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": { @@ -14002,12 +12836,6 @@ "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.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", @@ -14109,9 +12937,9 @@ } }, "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", @@ -14119,7 +12947,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": { @@ -14229,6 +13060,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", @@ -14239,10 +13078,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", @@ -14250,93 +13092,42 @@ "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.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "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==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "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==", + "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, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/yocto-queue": { @@ -15535,166 +14326,180 @@ } }, "@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" } }, + "@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", "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.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", "dev": true, "optional": true }, @@ -15803,162 +14608,162 @@ "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 }, @@ -16009,39 +14814,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": { @@ -16051,9 +14823,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.2", + "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.2.tgz", + "integrity": "sha512-S0nw2C6Tkm7fVX5TGYqeROGD+Z9Coa2iFpW+ysYBDH3YvCqOY3wVQvSgwbaliLJkjTnSEYCBe9qFqKV8WUFpVw==", "dev": true, "requires": { "@lit/reactive-element": "^1.6.2 || ^2.0.0" @@ -16069,24 +14841,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", @@ -16223,9 +14985,9 @@ "dev": 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" @@ -16893,13 +15655,12 @@ "dev": true }, "@stylistic/eslint-plugin": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.7.2.tgz", - "integrity": "sha512-3DVLU5HEuk2pQoBmXJlzvrxbKNpu2mJ0SRqz5O/CJjyNCr12ZiPcYMEtuArTyPOk5i7bsAU44nywh1rGfe3gKQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.8.0.tgz", + "integrity": "sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==", "dev": true, "requires": { - "@types/eslint": "^9.6.1", - "@typescript-eslint/utils": "^8.3.0", + "@typescript-eslint/utils": "^8.4.0", "eslint-visitor-keys": "^4.0.0", "espree": "^10.1.0", "estraverse": "^5.3.0", @@ -16952,9 +15713,9 @@ "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": { @@ -17049,26 +15810,27 @@ "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": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@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": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/fluent-ffmpeg": { @@ -17107,9 +15869,9 @@ "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": "*" @@ -17214,6 +15976,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", @@ -17258,16 +16030,16 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", - "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", + "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/type-utils": "8.4.0", - "@typescript-eslint/utils": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/type-utils": "8.5.0", + "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -17287,6 +16059,57 @@ "debug": "^4.3.4" }, "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" + } + }, + "@typescript-eslint/types": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.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" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.4.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "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", @@ -17296,32 +16119,47 @@ "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/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", + "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", "dev": true, "requires": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0" + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0" } }, "@typescript-eslint/type-utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", - "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", + "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/utils": "8.5.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -17344,19 +16182,19 @@ } }, "@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", + "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", + "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", "dev": true, "requires": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -17407,24 +16245,24 @@ } }, "@typescript-eslint/utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", - "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0" + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0" } }, "@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", + "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", "dev": true, "requires": { - "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/types": "8.5.0", "eslint-visitor-keys": "^3.4.3" } }, @@ -17445,6 +16283,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", @@ -17791,24 +16635,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "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==", - "dev": true - }, "array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -17844,12 +16670,6 @@ "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", @@ -17921,12 +16741,6 @@ "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", @@ -17934,9 +16748,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", @@ -17953,12 +16767,6 @@ "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.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -17985,32 +16793,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", @@ -18089,7 +16871,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": { @@ -18211,23 +16993,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", @@ -18269,12 +17034,6 @@ "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", @@ -18361,48 +17120,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": { @@ -18453,16 +17179,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", @@ -18522,21 +17238,16 @@ } }, "commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==" + "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", @@ -18594,12 +17305,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", @@ -18696,32 +17401,32 @@ "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": { @@ -18731,12 +17436,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": { @@ -18789,9 +17512,9 @@ } }, "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" } @@ -18820,12 +17543,6 @@ } } }, - "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", @@ -18872,16 +17589,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", @@ -18907,9 +17614,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": { @@ -18942,40 +17649,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": { @@ -19073,9 +17780,9 @@ } }, "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 }, "error-ex": { @@ -19241,33 +17948,35 @@ } }, "esbuild": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.2.tgz", - "integrity": "sha512-Rv/CJquZKE00irDLDpk9jmWmtxx1NW+MGpBbNNouaDY0oBwk806uJ51WpLaJBQUxhZqLauX2rrNol5lVQceHJw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "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.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, "escalade": { @@ -19871,57 +18580,6 @@ } } }, - "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", @@ -20002,58 +18660,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", @@ -20211,12 +18817,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", @@ -20234,15 +18834,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", @@ -20352,12 +18943,6 @@ "resolve-pkg-maps": "^1.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true - }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -20380,12 +18965,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", @@ -20522,58 +19101,6 @@ "has-symbols": "^1.0.3" } }, - "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" - } - } - } - }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -20693,6 +19220,12 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, + "immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -20797,15 +19330,6 @@ "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.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -20847,12 +19371,6 @@ "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", @@ -20867,15 +19385,6 @@ "hasown": "^2.0.2" } }, - "is-data-descriptor": { - "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, - "requires": { - "hasown": "^2.0.0" - } - }, "is-data-view": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", @@ -20889,25 +19398,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", @@ -21035,12 +19525,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", @@ -21059,9 +19543,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", @@ -21183,227 +19667,56 @@ "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.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz", + "integrity": "sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==", "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" @@ -21532,27 +19845,12 @@ "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", @@ -21570,9 +19868,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": { @@ -21764,16 +20062,6 @@ "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", @@ -21894,25 +20182,6 @@ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "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", @@ -22074,9 +20343,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" @@ -22088,47 +20357,6 @@ "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", @@ -22144,15 +20372,6 @@ "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.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", @@ -22199,15 +20418,6 @@ "es-abstract": "^1.23.2" } }, - "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==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", @@ -22260,11 +20470,11 @@ } }, "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" @@ -22378,18 +20588,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", @@ -22465,12 +20663,6 @@ "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", @@ -22770,16 +20962,6 @@ "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.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -22791,18 +20973,6 @@ "set-function-name": "^2.0.1" } }, - "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", @@ -22815,12 +20985,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", @@ -22860,12 +21024,6 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "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==", - "dev": true - }, "responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -22874,12 +21032,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", @@ -22948,15 +21100,6 @@ "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.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", @@ -23006,12 +21149,14 @@ "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.78.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", + "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", "dev": true, "requires": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" } }, "sax": { @@ -23147,12 +21292,6 @@ "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-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -23177,35 +21316,6 @@ "has-property-descriptors": "^1.0.2" } }, - "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" - }, - "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==", - "dev": true - } - } - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -23230,33 +21340,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": { @@ -23285,13 +21395,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 } } }, @@ -23429,106 +21536,6 @@ } } }, - "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", @@ -23626,19 +21633,6 @@ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "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", @@ -23648,12 +21642,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", @@ -23686,21 +21674,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" - } - }, - "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", @@ -23713,37 +21686,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", @@ -24043,18 +21985,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": { @@ -24137,38 +22079,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", @@ -24215,9 +22125,9 @@ "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": { @@ -24330,14 +22240,44 @@ "dev": true }, "typescript-eslint": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", - "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz", + "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "8.4.0", - "@typescript-eslint/parser": "8.4.0", - "@typescript-eslint/utils": "8.4.0" + "@typescript-eslint/eslint-plugin": "8.5.0", + "@typescript-eslint/parser": "8.5.0", + "@typescript-eslint/utils": "8.5.0" + }, + "dependencies": { + "@typescript-eslint/parser": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", + "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "debug": "^4.3.4" + } + }, + "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" + } + }, + "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 + } } }, "uid-safe": { @@ -24360,26 +22300,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", @@ -24392,46 +22312,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", @@ -24450,18 +22330,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", @@ -24494,9 +22362,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", @@ -24569,21 +22437,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 } } @@ -24623,12 +22491,6 @@ "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.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", @@ -24713,9 +22575,9 @@ "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", @@ -24791,6 +22653,13 @@ "@xmpp/jid": "^0.13.1", "@xmpp/xml": "^0.13.1", "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": { @@ -24800,9 +22669,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": { @@ -24811,75 +22680,31 @@ "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.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "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", diff --git a/package.json b/package.json index 9b178d60..c9ba7c8c 100644 --- a/package.json +++ b/package.json @@ -27,53 +27,53 @@ ], "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", "http-proxy": "^1.18.1", "log-rotate": "^0.2.8", - "openid-client": "^5.6.5", - "validate-color": "^2.2.1", + "openid-client": "^5.7.0", + "validate-color": "^2.2.4", "xmppjs-chat-bot": "^0.4.0" }, "devDependencies": { "@eslint/js": "^9.10.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.2", + "@lit/task": "^1.0.1", + "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@stylistic/eslint-plugin": "^2.7.2", + "@stylistic/eslint-plugin": "^2.8.0", "@tsconfig/node12": "^1.0.9", - "@types/async": "^3.2.9", + "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", - "@types/express": "^4.17.13", + "@types/express": "^4.17.21", "@types/got": "^9.6.12", - "@types/http-proxy": "^1.17.9", + "@types/http-proxy": "^1.17.15", "@types/node": "^16.11.6", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", - "commander": "^11.0.0", - "esbuild": "^0.16.1", + "commander": "^12.1.0", + "esbuild": "^0.23.1", "eslint": "^8.57.0", "eslint-config-love": "^64.0.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", - "lit": "^2.4.0", - "lit-analyzer": "^1.2.1", + "lit": "^3.2.0", + "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.43.4", - "sharp": "^0.33.2", + "sass": "^1.78.0", + "sharp": "^0.33.5", "stylelint": "^14.0.1", "stylelint-config-recommended-scss": "^5.0.1", "stylelint-config-standard-scss": "^2.0.1", - "svgo": "^2.8.0", + "svgo": "^3.3.2", "typescript": "^5.5.4", - "typescript-eslint": "^8.4.0", - "yaml": "^2.2.1" + "typescript-eslint": "^8.5.0", + "yaml": "^2.5.1" }, "engine": { "peertube": ">=4.2.0" diff --git a/server/lib/routers/webchat.ts b/server/lib/routers/webchat.ts index c4b060e6..c5c8bd60 100644 --- a/server/lib/routers/webchat.ts +++ b/server/lib/routers/webchat.ts @@ -324,7 +324,7 @@ async function enableProxyRoute ( target: 'http://localhost:' + prosodyProxyInfo.port + '/http-bind', ignorePath: true }) - currentHttpBindProxy.on('error', (err, req, res) => { + 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 +346,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 +368,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 ' + From 4f2fbfc22875bfd8e3c45873f5a6de9d0dd2348c Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 10:23:16 +0200 Subject: [PATCH 022/120] Updating other dependencies. --- package-lock.json | 28 ++++++++++++++-------------- package.json | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index b9ffec92..1fedb039 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "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.7.0", @@ -35,7 +35,7 @@ "@types/express": "^4.17.21", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", - "@types/node": "^16.11.6", + "@types/node": "^16.18.108", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", @@ -3884,9 +3884,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==" + "version": "16.18.108", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.108.tgz", + "integrity": "sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -8081,9 +8081,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", @@ -15940,9 +15940,9 @@ } }, "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + "version": "16.18.108", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.108.tgz", + "integrity": "sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -19030,9 +19030,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", diff --git a/package.json b/package.json index c9ba7c8c..40e955da 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "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.7.0", @@ -52,7 +52,7 @@ "@types/express": "^4.17.21", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", - "@types/node": "^16.11.6", + "@types/node": "^16.18.108", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", From 634e8945220300310af4dcbff36e2248ffe389ff Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 10:38:45 +0200 Subject: [PATCH 023/120] Updating stylelint dependencies. --- assets/styles/style.scss | 2 +- assets/styles/video/_container.scss | 2 +- .../custom/shared/styles/_peertubetheme.scss | 2 +- package-lock.json | 1731 +++++++---------- package.json | 6 +- 5 files changed, 672 insertions(+), 1071 deletions(-) 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 3d5c1361..f0b187c2 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/conversejs/custom/shared/styles/_peertubetheme.scss b/conversejs/custom/shared/styles/_peertubetheme.scss index 43bff78e..ff1018b7 100644 --- a/conversejs/custom/shared/styles/_peertubetheme.scss +++ b/conversejs/custom/shared/styles/_peertubetheme.scss @@ -198,7 +198,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/package-lock.json b/package-lock.json index 1fedb039..da0257f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,9 +50,9 @@ "npm-run-all": "^4.1.5", "sass": "^1.78.0", "sharp": "^0.33.5", - "stylelint": "^14.0.1", - "stylelint-config-recommended-scss": "^5.0.1", - "stylelint-config-standard-scss": "^2.0.1", + "stylelint": "^16.9.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.5.0", @@ -1017,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": { @@ -1062,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", @@ -1274,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" } @@ -1303,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" @@ -1431,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", @@ -1463,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", @@ -1526,20 +1494,90 @@ "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.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", + "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", "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.1" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", + "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", + "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", + "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.1", + "@csstools/css-tokenizer": "^3.0.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "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": "^6.1.0" } }, "node_modules/@dabh/diagnostics": { @@ -1553,6 +1591,16 @@ "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": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", @@ -3862,12 +3910,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", @@ -3888,18 +3930,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.108.tgz", "integrity": "sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==" }, - "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 - }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -5000,15 +5030,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/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -5416,41 +5437,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", @@ -5782,28 +5768,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": { @@ -5860,12 +5847,12 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", + "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", "dev": true, "engines": { - "node": ">=12.22" + "node": ">=12 || >=16" } }, "node_modules/css-select": { @@ -6029,37 +6016,6 @@ "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/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -6394,6 +6350,15 @@ "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", @@ -7593,6 +7558,12 @@ "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": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", @@ -8116,15 +8087,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "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-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -8380,15 +8342,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", @@ -8398,15 +8351,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", @@ -8694,15 +8638,6 @@ "node": ">=8" } }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -8940,9 +8875,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": { @@ -8979,9 +8914,9 @@ } }, "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": { @@ -9086,7 +9021,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": { @@ -9197,18 +9132,6 @@ "node": ">=6" } }, - "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/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -9270,94 +9193,17 @@ } }, "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", @@ -9451,15 +9297,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", @@ -9477,20 +9314,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/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -9648,9 +9471,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": [ { @@ -10287,9 +10110,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.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -10351,9 +10174,9 @@ } }, "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.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", "dev": true, "funding": [ { @@ -10370,9 +10193,9 @@ } ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -10385,47 +10208,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.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", + "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", "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", @@ -10594,102 +10437,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", @@ -10717,19 +10464,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", @@ -11695,9 +11429,9 @@ } }, "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" @@ -11892,18 +11626,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", @@ -11922,129 +11644,201 @@ "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.9.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", + "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", "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.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", + "@csstools/selector-specificity": "^4.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.2", + "css-tree": "^2.3.1", + "debug": "^4.3.6", + "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^9.0.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": "^5.3.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.34.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.0.1", + "postcss": "^8.4.41", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.0", + "postcss-selector-parser": "^6.1.2", "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", + "strip-ansi": "^7.1.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/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/stylelint/node_modules/balanced-match": { @@ -12054,12 +11848,12 @@ "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==", + "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" @@ -12070,6 +11864,31 @@ } } }, + "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/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -12080,9 +11899,9 @@ } }, "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==", + "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/resolve-from": { @@ -12094,6 +11913,21 @@ "node": ">=8" } }, + "node_modules/stylelint/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12116,16 +11950,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": { @@ -12190,9 +12027,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", @@ -12206,15 +12043,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", @@ -12307,15 +12144,6 @@ "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", @@ -12668,12 +12496,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", @@ -12992,16 +12814,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": { @@ -13940,12 +13774,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": { @@ -13975,15 +13809,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", @@ -14129,9 +13954,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", @@ -14149,13 +13974,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": { @@ -14232,17 +14058,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": { @@ -14262,15 +14077,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", @@ -14307,10 +14113,30 @@ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true }, + "@csstools/css-parser-algorithms": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", + "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "dev": true, + "requires": {} + }, + "@csstools/css-tokenizer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", + "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "dev": true + }, + "@csstools/media-query-list-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", + "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", + "dev": true, + "requires": {} + }, "@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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", "dev": true, "requires": {} }, @@ -14325,6 +14151,12 @@ "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": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", @@ -15918,12 +15750,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", @@ -15944,18 +15770,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.108.tgz", "integrity": "sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==" }, - "@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 - }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -16735,12 +16549,6 @@ "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 - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -17045,31 +16853,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", @@ -17327,24 +17110,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": { @@ -17395,9 +17169,9 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", + "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", "dev": true }, "css-select": { @@ -17519,30 +17293,6 @@ "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 - } - } - }, "decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -17785,6 +17535,12 @@ "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": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -18691,6 +18447,12 @@ "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": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", @@ -19059,12 +18821,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "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==", - "dev": true - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -19236,24 +18992,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", @@ -19450,12 +19194,6 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, - "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=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -19628,9 +19366,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": { @@ -19661,9 +19399,9 @@ } }, "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": { @@ -19764,7 +19502,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": { @@ -19845,12 +19583,6 @@ "semver": "^5.6.0" } }, - "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 - }, "mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -19902,68 +19634,10 @@ "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", @@ -20031,12 +19705,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", @@ -20051,17 +19719,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" - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -20177,9 +19834,9 @@ } }, "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 }, "natural-compare": { @@ -20629,9 +20286,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.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "picomatch": { "version": "2.3.1", @@ -20669,14 +20326,14 @@ "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.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", "dev": true, "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" } }, "postcss-media-query-parser": { @@ -20686,29 +20343,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.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", + "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", "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", @@ -20829,79 +20486,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", @@ -20926,16 +20510,6 @@ "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", @@ -21628,9 +21202,9 @@ "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-support": { @@ -21780,15 +21354,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", @@ -21801,58 +21366,59 @@ "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.9.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", + "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", "dev": true, "requires": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", + "@csstools/selector-specificity": "^4.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.2", + "css-tree": "^2.3.1", + "debug": "^4.3.6", + "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^9.0.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": "^5.3.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.34.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.0.1", + "postcss": "^8.4.41", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.0", + "postcss-selector-parser": "^6.1.2", "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", + "strip-ansi": "^7.1.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": { + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true + }, "balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -21860,12 +21426,31 @@ "dev": true }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "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" + } + }, + "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" } }, "is-plain-object": { @@ -21875,9 +21460,9 @@ "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==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "resolve-from": { @@ -21885,56 +21470,76 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } } } }, "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": { @@ -21955,9 +21560,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", @@ -22008,9 +21613,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", @@ -22021,15 +21626,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": { @@ -22105,12 +21710,6 @@ "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", @@ -22347,12 +21946,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", @@ -22617,13 +22210,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": { diff --git a/package.json b/package.json index 40e955da..7a17f564 100644 --- a/package.json +++ b/package.json @@ -67,9 +67,9 @@ "npm-run-all": "^4.1.5", "sass": "^1.78.0", "sharp": "^0.33.5", - "stylelint": "^14.0.1", - "stylelint-config-recommended-scss": "^5.0.1", - "stylelint-config-standard-scss": "^2.0.1", + "stylelint": "^16.9.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.5.0", From d5a25af6c8308f04f747741e1d3674fabe12d4fc Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 10:41:56 +0200 Subject: [PATCH 024/120] npm audit fix --- package-lock.json | 234 +++++++++++++++++++++++++++++++++------------- 1 file changed, 171 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index da0257f2..4301b482 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5170,9 +5170,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", @@ -5183,7 +5183,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" @@ -5193,6 +5193,21 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/qs": { + "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.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -7426,37 +7441,37 @@ } }, "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.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", "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-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", "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", "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.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -7489,6 +7504,15 @@ "node": ">= 0.6" } }, + "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.8" + } + }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9205,10 +9229,13 @@ } }, "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", @@ -10089,9 +10116,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": { @@ -10787,9 +10814,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", @@ -10964,9 +10991,9 @@ } }, "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.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", "dev": true, "dependencies": { "encodeurl": "~1.0.2", @@ -10978,6 +11005,36 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-static/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/serve-static/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -11163,13 +11220,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" @@ -16657,9 +16718,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", @@ -16670,10 +16731,21 @@ "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" + }, + "dependencies": { + "qs": { + "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.6" + } + } } }, "boolbase": { @@ -18337,37 +18409,37 @@ } }, "express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", "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-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", "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", "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.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -18381,6 +18453,12 @@ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -19640,9 +19718,9 @@ "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": { @@ -20268,9 +20346,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": { @@ -20745,9 +20823,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", @@ -20855,15 +20933,44 @@ } }, "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.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.18.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 + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + } + } } }, "set-function-length": { @@ -21008,13 +21115,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": { From 7330729ac1da71dd9f5be8ed977b4ad3d30529ba Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 10:59:33 +0200 Subject: [PATCH 025/120] Enabling dependabot. --- .github/dependabot.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..1238aded --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,27 @@ +version: 2 +updates: +- package-ecosystem: npm + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 + ignore: + - dependency-name: typescript + versions: # linting libs are not ready for 5.6 + - "version-update:semver-minor" + - "version-update:semver-major" + - dependency-name: "@tsconfig/node12" # breaks the config, must see why before updating + versions: + - "version-update:semver-major" + - dependency-name: "@types/nodes" # must be set to the Peertube required version. + - dependency-name: "@peertube/peertube-types" # must be set to the Peertube required version. + - dependency-name: eslint + versions: + - "version-update:semver-major" + - dependency-name: got + versions: + - "version-update:semver-major" # breaking changes, must adapt code. + - dependency-name: "@typescript-eslint/parser" + versions: # for now 8.5.0 is broken because of the lack of ./tsconfig.json file. Must fix conf. + - "version-update:semver-minor" + - "version-update:semver-major" From 5f4cc7c46e801074f10515572059f7969f3c2298 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 11:03:51 +0200 Subject: [PATCH 026/120] Fix dependabot conf file. --- .github/dependabot.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1238aded..82186212 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,20 +8,18 @@ updates: ignore: - dependency-name: typescript versions: # linting libs are not ready for 5.6 - - "version-update:semver-minor" - - "version-update:semver-major" + - ">=5.6.0" - dependency-name: "@tsconfig/node12" # breaks the config, must see why before updating versions: - - "version-update:semver-major" + - ">=2.0.0" - dependency-name: "@types/nodes" # must be set to the Peertube required version. - dependency-name: "@peertube/peertube-types" # must be set to the Peertube required version. - dependency-name: eslint versions: - - "version-update:semver-major" + - ">=9.0.0" - dependency-name: got versions: - - "version-update:semver-major" # breaking changes, must adapt code. + - ">=12.0.0" # breaking changes, must adapt code. - dependency-name: "@typescript-eslint/parser" versions: # for now 8.5.0 is broken because of the lack of ./tsconfig.json file. Must fix conf. - - "version-update:semver-minor" - - "version-update:semver-major" + - ">=8.5.0" From 1ce68eec7e106247ed28536b0f5ee43d7b30be62 Mon Sep 17 00:00:00 2001 From: "T.S" Date: Sun, 8 Sep 2024 01:15:52 +0000 Subject: [PATCH 027/120] Translated using Weblate (Japanese) Currently translated at 100.0% (306 of 306 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/ja/ --- languages/ja.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/languages/ja.yml b/languages/ja.yml index 6d49bb48..1fdeb370 100644 --- a/languages/ja.yml +++ b/languages/ja.yml @@ -375,3 +375,18 @@ 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: 削除しない特殊文字の文字数を指定してください。 From 0c220b2fc4f38858493c236894c326e952c2c174 Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Sun, 8 Sep 2024 19:30:12 +0000 Subject: [PATCH 028/120] Translated using Weblate (German) Currently translated at 100.0% (306 of 306 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/de/ --- languages/de.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/languages/de.yml b/languages/de.yml index 9351dc85..73588b5a 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -353,8 +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_applytomoderators_label: Auch Nachrichten - von Moderatoren moderieren +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 @@ -614,3 +613,14 @@ emoji_only_mode_desc_2: "Dieser Modus kann zum Beispiel nützlich sein:\n
      \n 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 vor dem Löschen von Nachrichten akzeptiert werden. +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" From ace8ad72f5178eb171ee147d67bdfb441b16f81f Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Sun, 8 Sep 2024 19:29:48 +0000 Subject: [PATCH 029/120] Translated using Weblate (German) Currently translated at 100.0% (891 of 891 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/de/ --- support/documentation/po/livechat.de.po | 28 +++++++++++++++---------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index fb8508ca..22e67f8a 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -8,15 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-09-07 12:38+0200\n" -"PO-Revision-Date: 2024-09-07 06:09+0000\n" -"Last-Translator: Victor Hampel \n" -"Language-Team: German \n" +"PO-Revision-Date: 2024-09-09 19:39+0000\n" +"Last-Translator: Victor Hampel " +"\n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 5.7.1\n" +"X-Generator: Weblate 5.7.2\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -3149,16 +3151,17 @@ msgstr "![Screenshot der Seite mit den Kanaloptionen, mit einigen Feldern zur Ko #. 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." +#, no-wrap msgid "The bot can automatically moderate messages containing too many special characters." -msgstr "Der Chatbot kann automatisch Nachrichten moderieren, die verbotene Wörter enthalten." +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 "" +msgstr "Sonderzeichen" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md @@ -3175,10 +3178,13 @@ msgstr "Konfiguration" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#, fuzzy -#| 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 option \"Forbid special characters\".](/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 verbotenen Wörter.](/peertube-plugin-livechat/images/bot_forbidden_words.png?classes=shadow,border&height=400px \"Konfiguration der verbotenen Wörter\")" +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 From 9731835c3196a93cf187daf843e28dcf48c775fa Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 11:08:18 +0200 Subject: [PATCH 030/120] Fixing again dependabot config file. --- .github/dependabot.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 82186212..824c9bc0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,19 +7,23 @@ updates: open-pull-requests-limit: 10 ignore: - dependency-name: typescript - versions: # linting libs are not ready for 5.6 - - ">=5.6.0" - - dependency-name: "@tsconfig/node12" # breaks the config, must see why before updating versions: - - ">=2.0.0" - - dependency-name: "@types/nodes" # must be set to the Peertube required version. - - dependency-name: "@peertube/peertube-types" # must be set to the Peertube required version. + - ">=5.6.0" # linting libs are not ready for 5.6 + - dependency-name: "@tsconfig/node12" + versions: + - ">=2.0.0" # breaks the config, must see why before updating + - dependency-name: "@types/nodes" + 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" + - ">=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: # for now 8.5.0 is broken because of the lack of ./tsconfig.json file. Must fix conf. - - ">=8.5.0" + versions: + - ">=8.5.0" # for now 8.5.0 is broken because of the lack of ./tsconfig.json file. Must fix conf. From 3e23d2751f71e3c14d2577432fbb65187ef72246 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 11:10:00 +0200 Subject: [PATCH 031/120] Update @tsconfig/node12 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4301b482..388f667a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", "@stylistic/eslint-plugin": "^2.8.0", - "@tsconfig/node12": "^1.0.9", + "@tsconfig/node12": "^1.0.11", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", @@ -3699,9 +3699,9 @@ } }, "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==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "node_modules/@types/async": { @@ -15600,9 +15600,9 @@ "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==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "@types/async": { diff --git a/package.json b/package.json index 7a17f564..9079ea0d 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", "@stylistic/eslint-plugin": "^2.8.0", - "@tsconfig/node12": "^1.0.9", + "@tsconfig/node12": "^1.0.11", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", From 071ee9f6b4c7fd12c4074c6de0f6ee63d1d2d70a Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 11:11:28 +0200 Subject: [PATCH 032/120] Dependabot: daily update. --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 824c9bc0..86aebb38 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,7 +3,7 @@ updates: - package-ecosystem: npm directory: "/" schedule: - interval: weekly + interval: daily open-pull-requests-limit: 10 ignore: - dependency-name: typescript From c65995e5fa9c65dc65f5c41e5a0ea2ac4a8bfb49 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 12:02:40 +0200 Subject: [PATCH 033/120] Documentation: new shortcode for livechat version notices. --- languages/en.yml | 2 ++ languages/fr.yml | 1 + .../content/en/documentation/admin/mod_firewall.md | 4 +--- .../content/en/documentation/user/obs.md | 4 +--- .../user/streamers/bot/special_chars.md | 4 +--- .../en/documentation/user/streamers/emojis.md | 4 +--- .../en/documentation/user/streamers/emojis_only.md | 4 +--- .../en/documentation/user/streamers/moderation.md | 12 +++--------- .../documentation/user/streamers/moderation_delay.md | 4 +--- .../documentation/user/streamers/moderation_notes.md | 4 +--- .../content/en/documentation/user/streamers/polls.md | 4 +--- .../en/documentation/user/streamers/slow_mode.md | 4 +--- .../content/en/documentation/user/streamers/tasks.md | 4 +--- .../content/en/documentation/user/streamers/terms.md | 4 +--- .../content/en/documentation/user/viewers.md | 4 +--- .../layouts/shortcodes/livechat_version_notice.html | 9 +++++++++ 16 files changed, 27 insertions(+), 45 deletions(-) create mode 100644 support/documentation/layouts/shortcodes/livechat_version_notice.html diff --git a/languages/en.yml b/languages/en.yml index 7e0e8c44..649f6247 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -660,3 +660,5 @@ livechat_configuration_channel_special_chars_desc: | 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 before deleting messages. + +features_comes_with: This feature comes with the livechat plugin version X.X.X. diff --git a/languages/fr.yml b/languages/fr.yml index 2a0d6fd0..51cf6331 100644 --- a/languages/fr.yml +++ b/languages/fr.yml @@ -619,3 +619,4 @@ 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 +features_comes_with: Cette fonctionnalité arrive avec le plugin livechat version X.X.X. 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/bot/special_chars.md b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md index 8a21ca97..700fe359 100644 --- a/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md +++ b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md @@ -7,9 +7,7 @@ chapter: false ## {{% livechat_label livechat_configuration_channel_special_chars_label %}} -{{% notice info %}} -This feature comes with the livechat plugin version 11.1.0. -{{% /notice %}} +{{% livechat_version_notice 11.1.0 %}} ### Configuration 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 index b3ca0be6..2376c13e 100644 --- a/support/documentation/content/en/documentation/user/streamers/emojis_only.md +++ b/support/documentation/content/en/documentation/user/streamers/emojis_only.md @@ -5,9 +5,7 @@ weight: 335 chapter: false --- -{{% notice info %}} -This feature comes with the livechat plugin version 11.1.0. -{{% /notice %}} +{{% livechat_version_notice 11.1.0 %}} ## {{% livechat_label emoji_only_mode_title %}} 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 81fa5dc0..1ae677f3 100644 --- a/support/documentation/content/en/documentation/user/streamers/polls.md +++ b/support/documentation/content/en/documentation/user/streamers/polls.md @@ -5,9 +5,7 @@ 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/layouts/shortcodes/livechat_version_notice.html b/support/documentation/layouts/shortcodes/livechat_version_notice.html new file mode 100644 index 00000000..7a848ee3 --- /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 "features_comes_with") "X.X.X" ($.Get 0)) + "icon" (.Get "icon" | default (.Get 2)) + "style" ("info") + "title" (.Get "title" | default (.Get 1)) +) }} From 5018d04b78ffedc34b769f50d01864f92335c039 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 12:35:07 +0200 Subject: [PATCH 034/120] Documentation: livechat_version_notice strings migration. --- languages/de.yml | 1 + languages/hr.yml | 1 + support/documentation/po/livechat.ar.po | 48 +---------- support/documentation/po/livechat.ca.po | 48 +---------- support/documentation/po/livechat.cs.po | 48 +---------- support/documentation/po/livechat.de.po | 89 +++++++------------- support/documentation/po/livechat.el.po | 48 +---------- support/documentation/po/livechat.en.pot | 56 +----------- support/documentation/po/livechat.eo.po | 48 +---------- support/documentation/po/livechat.es.po | 48 +---------- support/documentation/po/livechat.eu.po | 48 +---------- support/documentation/po/livechat.fa.po | 48 +---------- support/documentation/po/livechat.fi.po | 48 +---------- support/documentation/po/livechat.fr.po | 76 ++++++----------- support/documentation/po/livechat.gd.po | 48 +---------- support/documentation/po/livechat.gl.po | 48 +---------- support/documentation/po/livechat.hr.po | 74 +++++----------- support/documentation/po/livechat.hu.po | 48 +---------- support/documentation/po/livechat.is.po | 48 +---------- support/documentation/po/livechat.it.po | 48 +---------- support/documentation/po/livechat.ja.po | 48 +---------- support/documentation/po/livechat.kab.po | 48 +---------- support/documentation/po/livechat.nb.po | 48 +---------- support/documentation/po/livechat.nl.po | 48 +---------- support/documentation/po/livechat.nn.po | 48 +---------- support/documentation/po/livechat.oc.po | 48 +---------- support/documentation/po/livechat.pl.po | 48 +---------- support/documentation/po/livechat.pt.po | 48 +---------- support/documentation/po/livechat.ru.po | 48 +---------- support/documentation/po/livechat.sq.po | 48 +---------- support/documentation/po/livechat.sv.po | 48 +---------- support/documentation/po/livechat.th.po | 48 +---------- support/documentation/po/livechat.tok.po | 48 +---------- support/documentation/po/livechat.tr.po | 46 ---------- support/documentation/po/livechat.uk.po | 48 +---------- support/documentation/po/livechat.vi.po | 48 +---------- support/documentation/po/livechat.zh-Hans.po | 48 +---------- support/documentation/po/livechat.zh-Hant.po | 48 +---------- 38 files changed, 113 insertions(+), 1718 deletions(-) diff --git a/languages/de.yml b/languages/de.yml index 73588b5a..a4a94b9f 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -624,3 +624,4 @@ livechat_configuration_channel_special_chars_desc: "Wenn Sie diese Option aktivi 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" +features_comes_with: Diese Funktion wird mit dem Livechatplugin Version X.X.X verfügbar sein. diff --git a/languages/hr.yml b/languages/hr.yml index b77e866f..6f94b82c 100644 --- a/languages/hr.yml +++ b/languages/hr.yml @@ -341,3 +341,4 @@ 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. +features_comes_with: Ova je funkcija dostupna s dodatkom za chat uživo verzije X.X.X. diff --git a/support/documentation/po/livechat.ar.po b/support/documentation/po/livechat.ar.po index aa1c775d..5d280c84 100644 --- a/support/documentation/po/livechat.ar.po +++ b/support/documentation/po/livechat.ar.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2024-08-30 20:08+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -1874,13 +1874,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 @@ -2614,12 +2607,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 @@ -3087,12 +3074,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3301,11 +3282,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 @@ -3446,13 +3422,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." @@ -4022,11 +3991,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." @@ -4117,11 +4081,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." @@ -4487,11 +4446,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 89eb1f7c..a5ba8dd2 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Catalan \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 d166afbf..89acb0dc 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Czech \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 22e67f8a..b0f10c62 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -7,12 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2024-09-09 19:39+0000\n" -"Last-Translator: Victor Hampel " -"\n" -"Language-Team: German \n" +"Last-Translator: Victor Hampel \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1940,13 +1938,6 @@ 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 @@ -2688,12 +2679,6 @@ 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 @@ -3153,9 +3138,7 @@ msgstr "![Screenshot der Seite mit den Kanaloptionen, mit einigen Feldern zur Ko #: 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." +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 @@ -3163,12 +3146,6 @@ msgstr "" msgid "Special characters" msgstr "Sonderzeichen" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -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." - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3179,12 +3156,7 @@ msgstr "Konfiguration" #. 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 option \"Forbid special characters\".](/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\")" +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 @@ -3386,11 +3358,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 @@ -3533,13 +3500,6 @@ msgstr "Ab livechat v10.0.0 haben Admins und Moderatoren der Peertube-Instanz st 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." - #. 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." @@ -4109,11 +4069,6 @@ msgstr "Plugin peertube-plugin-livechat Langsamer Modus" msgid "Slow mode" 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." @@ -4204,11 +4159,6 @@ msgstr "Sie können Aufgaben und Aufgabenlisten mit Ihrem Moderationsteam bearbe msgid "Tasks / To-do lists" 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." @@ -4573,11 +4523,6 @@ msgstr "Wenn Sie ein Live-Video auf einer Instanz ansehen, auf der Sie kein Kont msgid "If you have a Peertube account on another Peertube instance" 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." - #. 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." @@ -4955,6 +4900,30 @@ msgstr "[Meilensteine auf Github](https://github.com/JohnXLivingston/peertube-pl 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 "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 "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 "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 "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 "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 "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 "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 "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 "![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)" diff --git a/support/documentation/po/livechat.el.po b/support/documentation/po/livechat.el.po index df38cf3a..3d4a7de8 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Greek \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 b0b163c0..593d082b 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2107,14 +2107,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 +2934,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 @@ -3483,13 +3468,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -#, markdown-text -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3719,12 +3697,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 @@ -3883,14 +3855,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 @@ -4547,12 +4511,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 @@ -4656,12 +4614,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 @@ -5078,12 +5030,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 29f9de73..0c587b24 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Esperanto \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 f8873a62..b7c4d39f 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2024-04-16 21:38+0000\n" "Last-Translator: rnek0 \n" "Language-Team: Spanish \n" @@ -1908,13 +1908,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 +2645,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 @@ -3125,12 +3112,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3341,11 +3322,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 @@ -3486,13 +3462,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." @@ -4062,11 +4031,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." @@ -4157,11 +4121,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." @@ -4527,11 +4486,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 08a74ca5..a29d96a3 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Basque \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 7e275832..1dc3a4dd 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Persian \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 7940ae31..649d7d5c 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Finnish \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 142f06b4..5ceeb9da 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2024-08-12 11:25+0000\n" "Last-Translator: John Livingston \n" "Language-Team: French \n" @@ -1962,13 +1962,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 +2733,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 @@ -3238,14 +3225,6 @@ msgstr "Le bot peut automatiquement modérer les messages contenant des mots int msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -#, 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." - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3473,11 +3452,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 @@ -3624,13 +3598,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." @@ -4234,11 +4201,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." @@ -4331,11 +4293,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." @@ -4736,11 +4693,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." @@ -5132,6 +5084,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 dae1a179..fe571b97 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Gaelic \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 c2e80e21..1bc44cf3 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Galician \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 7b4ce23e..4b304512 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2024-07-19 17:45+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" @@ -1877,15 +1877,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 +2634,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 @@ -3138,14 +3123,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -#, 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." - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3359,11 +3336,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 @@ -3508,13 +3480,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." @@ -4095,11 +4060,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." @@ -4192,11 +4152,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." @@ -4583,11 +4538,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." @@ -4972,6 +4922,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 8175d0ad..c43d0919 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Hungarian \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 cc144f7c..3b9fe2f7 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Icelandic \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 36cc83ba..49ba9602 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 14:21+0000\n" "Last-Translator: John Livingston \n" "Language-Team: Italian \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 5f31761d..23d55c97 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2024-08-29 10:38+0000\n" "Last-Translator: \"T.S\" \n" "Language-Team: Japanese \n" @@ -1909,13 +1909,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 +2671,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 @@ -3180,12 +3167,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3408,11 +3389,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 @@ -3560,13 +3536,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." @@ -4152,11 +4121,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." @@ -4250,11 +4214,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." @@ -4656,11 +4615,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 4d191fee..43b5b496 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kabyle \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 a0da5c6e..a59df785 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Bokmål \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 8e298f26..444827b6 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Dutch \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 24df984f..7368a673 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Norwegian Nynorsk \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 7ecdf159..d1181d05 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Occitan \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 8b77a7e3..d424c0a6 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Polish \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 fc7a6cea..78060b0d 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Portuguese \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 0f1f83f2..31e92f2e 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Russian \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 52130473..72d9ffa9 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Albanian \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 cf6d5e27..4920a586 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Swedish \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 f27081fb..0bcf82cf 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Thai \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 4bd20dbf..3ec7e6cf 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Toki Pona \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 3ada2d80..c548bf36 100644 --- a/support/documentation/po/livechat.tr.po +++ b/support/documentation/po/livechat.tr.po @@ -1854,13 +1854,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 +2587,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 @@ -3067,12 +3054,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3279,11 +3260,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 @@ -3424,13 +3400,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." @@ -4000,11 +3969,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." @@ -4095,11 +4059,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." @@ -4464,11 +4423,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 6bdb9668..fb4a5491 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Ukrainian \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 02d62604..ad35bb43 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Vietnamese \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 81f6ff15..3aface24 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Simplified) \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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 8ff864f7..fff13cc5 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-09-07 12:38+0200\n" +"POT-Creation-Date: 2024-09-10 12:33+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Traditional) \n" @@ -1873,13 +1873,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 +2606,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 @@ -3086,12 +3073,6 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Plain text -#: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#: build/documentation/pot_in/documentation/user/streamers/emojis_only.md -msgid "This feature comes with the livechat plugin version 11.1.0." -msgstr "" - #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md #: support/documentation/content/en/documentation/user/streamers/terms.md @@ -3298,11 +3279,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 @@ -3443,13 +3419,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." @@ -4019,11 +3988,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." @@ -4114,11 +4078,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." @@ -4483,11 +4442,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." From 5566f4b6cf5c41a922afef176ba206146731948a Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 17:58:12 +0200 Subject: [PATCH 035/120] Prosody modules: fix lua 5.3/5.4 compatibility: Lua 5.3 comes with new integers type, and can fail if floats are used where integers are wanted. --- prosody-modules/mod_muc_moderation_delay/delay.lib.lua | 6 +++--- prosody-modules/mod_muc_poll/poll.lib.lua | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) 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_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); From 2d5fec25c7aa10f9ffefa97398b917a979eb9117 Mon Sep 17 00:00:00 2001 From: "T.S" Date: Tue, 10 Sep 2024 12:06:41 +0000 Subject: [PATCH 036/120] Translated using Weblate (Japanese) Currently translated at 100.0% (307 of 307 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/ja/ --- languages/ja.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/languages/ja.yml b/languages/ja.yml index 1fdeb370..dbdd70de 100644 --- a/languages/ja.yml +++ b/languages/ja.yml @@ -390,3 +390,4 @@ livechat_configuration_applytomoderators_desc: "初期状態では、モデレ このオプションを有効にすると、モデレーターからのメッセージも削除されるようになります。\n" livechat_configuration_channel_special_chars_label: 特殊文字を禁止する livechat_configuration_channel_special_chars_tolerance_desc: 削除しない特殊文字の文字数を指定してください。 +features_comes_with: この機能は、livechatプラグイン バージョン X.X.Xにて登場します。 From 651641f63c12b8f0f62217c899c48312f2758253 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:33:51 +0200 Subject: [PATCH 037/120] Fix typo --- languages/de.yml | 2 +- languages/en.yml | 2 +- languages/fr.yml | 2 +- languages/hr.yml | 2 +- languages/ja.yml | 2 +- .../layouts/shortcodes/livechat_version_notice.html | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/languages/de.yml b/languages/de.yml index a4a94b9f..83988726 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -624,4 +624,4 @@ livechat_configuration_channel_special_chars_desc: "Wenn Sie diese Option aktivi 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" -features_comes_with: Diese Funktion wird mit dem Livechatplugin Version X.X.X verfügbar sein. +feature_comes_with: Diese Funktion wird mit dem Livechatplugin Version X.X.X verfügbar sein. diff --git a/languages/en.yml b/languages/en.yml index 649f6247..f8e6f2fe 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -661,4 +661,4 @@ livechat_configuration_channel_special_chars_desc: | livechat_configuration_channel_special_chars_tolerance_label: Tolerance livechat_configuration_channel_special_chars_tolerance_desc: Number of special characters to accept before deleting messages. -features_comes_with: This feature comes with the livechat plugin version X.X.X. +feature_comes_with: This feature comes with the livechat plugin version X.X.X. diff --git a/languages/fr.yml b/languages/fr.yml index 51cf6331..d2f0aea1 100644 --- a/languages/fr.yml +++ b/languages/fr.yml @@ -619,4 +619,4 @@ 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 -features_comes_with: Cette fonctionnalité arrive avec le plugin livechat version X.X.X. +feature_comes_with: Cette fonctionnalité arrive avec le plugin livechat version X.X.X. diff --git a/languages/hr.yml b/languages/hr.yml index 6f94b82c..f4ebcca2 100644 --- a/languages/hr.yml +++ b/languages/hr.yml @@ -341,4 +341,4 @@ 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. -features_comes_with: Ova je funkcija dostupna s dodatkom za chat uživo verzije X.X.X. +feature_comes_with: Ova je funkcija dostupna s dodatkom za chat uživo verzije X.X.X. diff --git a/languages/ja.yml b/languages/ja.yml index dbdd70de..52bff850 100644 --- a/languages/ja.yml +++ b/languages/ja.yml @@ -390,4 +390,4 @@ livechat_configuration_applytomoderators_desc: "初期状態では、モデレ このオプションを有効にすると、モデレーターからのメッセージも削除されるようになります。\n" livechat_configuration_channel_special_chars_label: 特殊文字を禁止する livechat_configuration_channel_special_chars_tolerance_desc: 削除しない特殊文字の文字数を指定してください。 -features_comes_with: この機能は、livechatプラグイン バージョン X.X.Xにて登場します。 +feature_comes_with: この機能は、livechatプラグイン バージョン X.X.Xにて登場します。 diff --git a/support/documentation/layouts/shortcodes/livechat_version_notice.html b/support/documentation/layouts/shortcodes/livechat_version_notice.html index 7a848ee3..5aed134d 100644 --- a/support/documentation/layouts/shortcodes/livechat_version_notice.html +++ b/support/documentation/layouts/shortcodes/livechat_version_notice.html @@ -2,7 +2,7 @@ {{- partial "shortcodes/notice.html" (dict "page" .Page "color" (.Get "color") - "content" (replace (i18n "features_comes_with") "X.X.X" ($.Get 0)) + "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)) From 5225257bb5135cd45da7c0416603e07f47dd08f0 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 10 Sep 2024 18:59:56 +0200 Subject: [PATCH 038/120] New option for the moderation bot: forbid duplicate messages (#516). --- CHANGELOG.md | 4 + client/@types/global.d.ts | 5 + .../templates/channel-configuration.ts | 120 ++++++++++++++++++ .../configuration/services/channel-details.ts | 16 +++ languages/en.yml | 8 ++ package-lock.json | 14 +- package.json | 2 +- server/lib/configuration/channel/sanitize.ts | 29 ++++- server/lib/configuration/channel/storage.ts | 28 ++++ server/lib/routers/api/configuration.ts | 3 +- shared/lib/types.ts | 8 ++ 11 files changed, 227 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9c6f20c..346d95ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,13 @@ ## 11.1.0 (Not Released Yet) +TODO Before releasing: +* update ConverseJS with latest merges. + ### 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. ### Minor changes and fixes diff --git a/client/@types/global.d.ts b/client/@types/global.d.ts index 84de939f..ccb7d1e9 100644 --- a/client/@types/global.d.ts +++ b/client/@types/global.d.ts @@ -155,3 +155,8 @@ 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/common/configuration/elements/templates/channel-configuration.ts b/client/common/configuration/elements/templates/channel-configuration.ts index ecae85a3..93be5857 100644 --- a/client/common/configuration/elements/templates/channel-configuration.ts +++ b/client/common/configuration/elements/templates/channel-configuration.ts @@ -460,6 +460,126 @@ export function tplChannelConfiguration (el: ChannelConfigurationElement): Templ ` } + + +
    + +
    + ${!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)} + +
    + ` + } + 24 * 3600 + ) { + 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`] = [] diff --git a/languages/en.yml b/languages/en.yml index f8e6f2fe..6aa540f4 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -662,3 +662,11 @@ livechat_configuration_channel_special_chars_tolerance_label: Tolerance livechat_configuration_channel_special_chars_tolerance_desc: Number of special characters to accept before deleting messages. 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. diff --git a/package-lock.json b/package-lock.json index 388f667a..af229ece 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "log-rotate": "^0.2.8", "openid-client": "^5.7.0", "validate-color": "^2.2.4", - "xmppjs-chat-bot": "^0.4.0" + "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { "@eslint/js": "^9.10.0", @@ -12932,9 +12932,9 @@ } }, "node_modules/xmppjs-chat-bot": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.4.0.tgz", - "integrity": "sha512-vN+hWlrSDKmOK+XDOx3VmBffQkEYtfEhLDiovwy8PqPJnyEGESsIcva33hvzWrBYES8hTz1DX320aFYx5tnnNA==", + "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/" @@ -22351,9 +22351,9 @@ } }, "xmppjs-chat-bot": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/xmppjs-chat-bot/-/xmppjs-chat-bot-0.4.0.tgz", - "integrity": "sha512-vN+hWlrSDKmOK+XDOx3VmBffQkEYtfEhLDiovwy8PqPJnyEGESsIcva33hvzWrBYES8hTz1DX320aFYx5tnnNA==", + "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", diff --git a/package.json b/package.json index 9079ea0d..f7064277 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "log-rotate": "^0.2.8", "openid-client": "^5.7.0", "validate-color": "^2.2.4", - "xmppjs-chat-bot": "^0.4.0" + "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { "@eslint/js": "^9.10.0", diff --git a/server/lib/configuration/channel/sanitize.ts b/server/lib/configuration/channel/sanitize.ts index c064bd71..ded2a78e 100644 --- a/server/lib/configuration/channel/sanitize.ts +++ b/server/lib/configuration/channel/sanitize.ts @@ -57,7 +57,18 @@ async function sanitizeChannelConfigurationOptions ( applyToModerators: false } if (!_assertObjectType(botData.forbidSpecialChars)) { - throw new Error('Invalid data.forbidSpecialChars data type') + throw new Error('Invalid data.bot.forbidSpecialChars data type') + } + + // noDuplicate comes with livechat 11.1.0 + botData.noDuplicate ??= { + enabled: false, + reason: '', + delay: 60, + applyToModerators: false + } + if (!_assertObjectType(botData.noDuplicate)) { + throw new Error('Invalid data.bot.noDuplicate data type') } // terms not present in livechat <= 10.2.0 @@ -76,6 +87,7 @@ async function sanitizeChannelConfigurationOptions ( 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 @@ -266,6 +278,21 @@ async function _readForbidSpecialChars ( 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, 24 * 3600), + 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') diff --git a/server/lib/configuration/channel/storage.ts b/server/lib/configuration/channel/storage.ts index 096700d0..cf9cce34 100644 --- a/server/lib/configuration/channel/storage.ts +++ b/server/lib/configuration/channel/storage.ts @@ -50,6 +50,12 @@ function getDefaultChannelConfigurationOptions (_options: RegisterServerOptions) tolerance: 0, applyToModerators: false }, + noDuplicate: { + enabled: false, + reason: '', + delay: 60, + applyToModerators: false + }, quotes: [], commands: [] }, @@ -124,6 +130,11 @@ function channelConfigurationOptionsToBotRoomConf ( 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) @@ -254,6 +265,23 @@ function _getForbidSpecialCharsHandler ( 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/routers/api/configuration.ts b/server/lib/routers/api/configuration.ts index 8ff5014b..92dfb342 100644 --- a/server/lib/routers/api/configuration.ts +++ b/server/lib/routers/api/configuration.ts @@ -96,7 +96,7 @@ async function initConfigurationApiRouter (options: RegisterServerOptions, route req.body.bot = channelOptions.bot req.body.bot.enabled = false } - // TODO: Same for forbidSpecialChars: if disabled, don't save reason and tolerance + // 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) { @@ -108,6 +108,7 @@ async function initConfigurationApiRouter (options: RegisterServerOptions, route // 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) { diff --git a/shared/lib/types.ts b/shared/lib/types.ts index e2a9fe47..34c97027 100644 --- a/shared/lib/types.ts +++ b/shared/lib/types.ts @@ -97,6 +97,7 @@ interface ChannelConfigurationOptions { quotes: ChannelQuotes[] commands: ChannelCommands[] forbidSpecialChars: ChannelForbidSpecialChars + noDuplicate: ChannelNoDuplicate // TODO: bannedJIDs: string[] } slowMode: { @@ -140,6 +141,13 @@ interface ChannelForbidSpecialChars { applyToModerators: boolean } +interface ChannelNoDuplicate { + enabled: boolean + reason: string + delay: number + applyToModerators: boolean +} + interface ChannelConfiguration { channel: ChannelInfos configuration: ChannelConfigurationOptions From 6f479d26c51ddc3006fac334cca2c1566758d3cc Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:11:18 +0200 Subject: [PATCH 039/120] Moving max and default values in constants. --- .../elements/templates/channel-configuration.ts | 5 +++-- .../configuration/services/channel-details.ts | 6 +++--- server/lib/configuration/channel/sanitize.ts | 16 +++++++++++----- server/lib/configuration/channel/storage.ts | 8 ++++++-- shared/lib/constants.ts | 6 ++++++ 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/client/common/configuration/elements/templates/channel-configuration.ts b/client/common/configuration/elements/templates/channel-configuration.ts index 93be5857..293af21d 100644 --- a/client/common/configuration/elements/templates/channel-configuration.ts +++ b/client/common/configuration/elements/templates/channel-configuration.ts @@ -10,6 +10,7 @@ import type { DynamicFormHeader, DynamicFormSchema } from '../../../lib/elements 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: Record = { @@ -381,7 +382,7 @@ export function tplChannelConfiguration (el: ChannelConfigurationElement): Templ ) )} min="0" - max="10" + max="${forbidSpecialCharsMaxTolerance}" id="peertube-livechat-forbid-special-chars-tolerance" aria-describedby="peertube-livechat-forbid-special-chars-tolerance-feedback" @input=${(event: InputEvent) => { @@ -501,7 +502,7 @@ export function tplChannelConfiguration (el: ChannelConfigurationElement): Templ ) )} min="0" - max="10" + max="${noDuplicateMaxDelay.toString()}" id="peertube-livechat-no-duplicate-delay" aria-describedby="peertube-livechat-no-duplicate-delay-feedback" @input=${(event: InputEvent) => { diff --git a/client/common/configuration/services/channel-details.ts b/client/common/configuration/services/channel-details.ts index 69e4d79f..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 @@ -83,7 +83,7 @@ export class ChannelDetailsService { propertiesError['bot.forbidSpecialChars.tolerance'].push(ValidationErrorType.WrongType) } else if ( forbidSpecialCharsTolerance < 0 || - forbidSpecialCharsTolerance > 10 + forbidSpecialCharsTolerance > forbidSpecialCharsMaxTolerance ) { propertiesError['bot.forbidSpecialChars.tolerance'].push(ValidationErrorType.NotInRange) } @@ -98,7 +98,7 @@ export class ChannelDetailsService { propertiesError['bot.noDuplicate.delay'].push(ValidationErrorType.WrongType) } else if ( noDuplicateDelay < 0 || - noDuplicateDelay > 24 * 3600 + noDuplicateDelay > noDuplicateMaxDelay ) { propertiesError['bot.noDuplicate.delay'].push(ValidationErrorType.NotInRange) } diff --git a/server/lib/configuration/channel/sanitize.ts b/server/lib/configuration/channel/sanitize.ts index ded2a78e..f9559c7c 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. @@ -53,7 +59,7 @@ async function sanitizeChannelConfigurationOptions ( botData.forbidSpecialChars ??= { enabled: false, reason: '', - tolerance: 0, + tolerance: forbidSpecialCharsDefaultTolerance, applyToModerators: false } if (!_assertObjectType(botData.forbidSpecialChars)) { @@ -64,7 +70,7 @@ async function sanitizeChannelConfigurationOptions ( botData.noDuplicate ??= { enabled: false, reason: '', - delay: 60, + delay: noDuplicateDefaultDelay, applyToModerators: false } if (!_assertObjectType(botData.noDuplicate)) { @@ -272,7 +278,7 @@ async function _readForbidSpecialChars ( const result: ChannelConfigurationOptions['bot']['forbidSpecialChars'] = { enabled: _readBoolean(botData.forbidSpecialChars, 'enabled'), reason: _readSimpleInput(botData.forbidSpecialChars, 'reason'), - tolerance: _readInteger(botData.forbidSpecialChars, 'tolerance', 0, 10), + tolerance: _readInteger(botData.forbidSpecialChars, 'tolerance', 0, forbidSpecialCharsMaxTolerance), applyToModerators: _readBoolean(botData.forbidSpecialChars, 'applyToModerators') } return result @@ -287,7 +293,7 @@ async function _readNoDuplicate ( const result: ChannelConfigurationOptions['bot']['noDuplicate'] = { enabled: _readBoolean(botData.noDuplicate, 'enabled'), reason: _readSimpleInput(botData.noDuplicate, 'reason'), - delay: _readInteger(botData.noDuplicate, 'delay', 0, 24 * 3600), + delay: _readInteger(botData.noDuplicate, 'delay', 0, noDuplicateMaxDelay), applyToModerators: _readBoolean(botData.noDuplicate, 'applyToModerators') } return result diff --git a/server/lib/configuration/channel/storage.ts b/server/lib/configuration/channel/storage.ts index cf9cce34..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' @@ -47,13 +51,13 @@ function getDefaultChannelConfigurationOptions (_options: RegisterServerOptions) forbidSpecialChars: { enabled: false, reason: '', - tolerance: 0, + tolerance: forbidSpecialCharsDefaultTolerance, applyToModerators: false }, noDuplicate: { enabled: false, reason: '', - delay: 60, + delay: noDuplicateDefaultDelay, applyToModerators: false }, quotes: [], 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 From 4c84146cff245fd6d384de87941b911f06735d15 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:16:24 +0200 Subject: [PATCH 040/120] Replace v11.1.0 by v12.0.0: There will probably be some breaking changes, so renaming v11.1.0 to v12.0.0. Also fixing a typo in a filename. --- CHANGELOG.md | 2 +- server/lib/configuration/channel/sanitize.ts | 4 ++-- .../lib/prosody/migration/{migrageV11-1.ts => migrateV12.ts} | 2 +- server/main.ts | 2 +- .../en/documentation/user/streamers/bot/special_chars.md | 2 +- .../content/en/documentation/user/streamers/emojis_only.md | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) rename server/lib/prosody/migration/{migrageV11-1.ts => migrateV12.ts} (97%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 346d95ae..5815b9ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 11.1.0 (Not Released Yet) +## 12.0.0 (Not Released Yet) TODO Before releasing: * update ConverseJS with latest merges. diff --git a/server/lib/configuration/channel/sanitize.ts b/server/lib/configuration/channel/sanitize.ts index f9559c7c..86546744 100644 --- a/server/lib/configuration/channel/sanitize.ts +++ b/server/lib/configuration/channel/sanitize.ts @@ -55,7 +55,7 @@ async function sanitizeChannelConfigurationOptions ( } mute.anonymous ??= false - // forbidSpecialChars comes with livechat 11.1.0 + // forbidSpecialChars comes with livechat 12.0.0 botData.forbidSpecialChars ??= { enabled: false, reason: '', @@ -66,7 +66,7 @@ async function sanitizeChannelConfigurationOptions ( throw new Error('Invalid data.bot.forbidSpecialChars data type') } - // noDuplicate comes with livechat 11.1.0 + // noDuplicate comes with livechat 12.0.0 botData.noDuplicate ??= { enabled: false, reason: '', diff --git a/server/lib/prosody/migration/migrageV11-1.ts b/server/lib/prosody/migration/migrateV12.ts similarity index 97% rename from server/lib/prosody/migration/migrageV11-1.ts rename to server/lib/prosody/migration/migrateV12.ts index d6dce70f..fe9a6775 100644 --- a/server/lib/prosody/migration/migrageV11-1.ts +++ b/server/lib/prosody/migration/migrateV12.ts @@ -9,7 +9,7 @@ import * as fs from 'fs' import { Emojis } from '../../emojis' /** - * Livechat v11.1.0: we must send channel custom emojis regexp to Prosody. + * Livechat v12.0.0: we must send channel custom emojis regexp to Prosody. * * This script will only be launched one time. */ diff --git a/server/main.ts b/server/main.ts index 6160c104..61d67fd7 100644 --- a/server/main.ts +++ b/server/main.ts @@ -18,7 +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/migrageV11-1' +import { updateProsodyChannelEmojisRegex } from './lib/prosody/migration/migrateV12' import { Emojis } from './lib/emojis' import { LivechatProsodyAuth } from './lib/prosody/auth' import decache from 'decache' 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 index 700fe359..ef48f9b2 100644 --- a/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md +++ b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md @@ -7,7 +7,7 @@ chapter: false ## {{% livechat_label livechat_configuration_channel_special_chars_label %}} -{{% livechat_version_notice 11.1.0 %}} +{{% livechat_version_notice 12.0.0 %}} ### Configuration diff --git a/support/documentation/content/en/documentation/user/streamers/emojis_only.md b/support/documentation/content/en/documentation/user/streamers/emojis_only.md index 2376c13e..459c2639 100644 --- a/support/documentation/content/en/documentation/user/streamers/emojis_only.md +++ b/support/documentation/content/en/documentation/user/streamers/emojis_only.md @@ -5,7 +5,7 @@ weight: 335 chapter: false --- -{{% livechat_version_notice 11.1.0 %}} +{{% livechat_version_notice 12.0.0 %}} ## {{% livechat_label emoji_only_mode_title %}} From c2430856b422b8c584e982dbba76bdc0c18fa578 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:30:17 +0200 Subject: [PATCH 041/120] Documentation: * no_duplicate documentation * livechat_version_notice documentation * fix typo in english string --- .../en/contributing/document/_index.md | 8 ++++- .../user/streamers/bot/no_duplicate.md | 28 ++++++++++++++++++ .../user/streamers/bot/special_chars.md | 2 +- .../content/en/images/bot_no_duplicate.png | Bin 0 -> 82368 bytes 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 support/documentation/content/en/documentation/user/streamers/bot/no_duplicate.md create mode 100644 support/documentation/content/en/images/bot_no_duplicate.png 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/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/special_chars.md b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md index ef48f9b2..70754be1 100644 --- a/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md +++ b/support/documentation/content/en/documentation/user/streamers/bot/special_chars.md @@ -13,7 +13,7 @@ chapter: false {{% livechat_label livechat_configuration_channel_special_chars_desc %}} -![Screenshot of the channel options page, with several fields to configure the option "Forbid special characters".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px "Forbid special characters configuration") +![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 %}} 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 0000000000000000000000000000000000000000..bbc05248e5176f9b7dc6d7890890c8bf81b4ff2d GIT binary patch literal 82368 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 H^zZ*4p~!3U literal 0 HcmV?d00001 From 89f1f42e7a5b8fb9da78f12aac279c4ed30c9ca6 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:37:02 +0200 Subject: [PATCH 042/120] npm run doc:translate. --- support/documentation/po/livechat.ar.po | 43 +++++++++++++---- support/documentation/po/livechat.ca.po | 43 +++++++++++++---- support/documentation/po/livechat.cs.po | 43 +++++++++++++---- support/documentation/po/livechat.de.po | 50 ++++++++++++++++---- support/documentation/po/livechat.el.po | 43 +++++++++++++---- support/documentation/po/livechat.en.pot | 45 ++++++++++++++---- support/documentation/po/livechat.eo.po | 43 +++++++++++++---- support/documentation/po/livechat.es.po | 47 +++++++++++++----- support/documentation/po/livechat.eu.po | 43 +++++++++++++---- support/documentation/po/livechat.fa.po | 43 +++++++++++++---- support/documentation/po/livechat.fi.po | 43 +++++++++++++---- support/documentation/po/livechat.fr.po | 48 +++++++++++++++---- support/documentation/po/livechat.gd.po | 43 +++++++++++++---- support/documentation/po/livechat.gl.po | 43 +++++++++++++---- support/documentation/po/livechat.hr.po | 45 ++++++++++++++---- support/documentation/po/livechat.hu.po | 43 +++++++++++++---- support/documentation/po/livechat.is.po | 43 +++++++++++++---- support/documentation/po/livechat.it.po | 43 +++++++++++++---- support/documentation/po/livechat.ja.po | 45 ++++++++++++++---- support/documentation/po/livechat.kab.po | 43 +++++++++++++---- support/documentation/po/livechat.nb.po | 43 +++++++++++++---- support/documentation/po/livechat.nl.po | 43 +++++++++++++---- support/documentation/po/livechat.nn.po | 43 +++++++++++++---- support/documentation/po/livechat.oc.po | 43 +++++++++++++---- support/documentation/po/livechat.pl.po | 43 +++++++++++++---- support/documentation/po/livechat.pt.po | 43 +++++++++++++---- support/documentation/po/livechat.ru.po | 43 +++++++++++++---- support/documentation/po/livechat.sq.po | 43 +++++++++++++---- support/documentation/po/livechat.sv.po | 43 +++++++++++++---- support/documentation/po/livechat.th.po | 43 +++++++++++++---- support/documentation/po/livechat.tok.po | 43 +++++++++++++---- support/documentation/po/livechat.tr.po | 41 ++++++++++++---- support/documentation/po/livechat.uk.po | 43 +++++++++++++---- support/documentation/po/livechat.vi.po | 43 +++++++++++++---- support/documentation/po/livechat.zh-Hans.po | 43 +++++++++++++---- support/documentation/po/livechat.zh-Hant.po | 43 +++++++++++++---- 36 files changed, 1208 insertions(+), 360 deletions(-) diff --git a/support/documentation/po/livechat.ar.po b/support/documentation/po/livechat.ar.po index 5d280c84..61904f50 100644 --- a/support/documentation/po/livechat.ar.po +++ b/support/documentation/po/livechat.ar.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+0200\n" "PO-Revision-Date: 2024-08-30 20:08+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \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 ### @@ -3040,6 +3045,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,16 +3104,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.ca.po b/support/documentation/po/livechat.ca.po index a5ba8dd2..caedce22 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 89acb0dc..6d5a106b 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+0200\n" "PO-Revision-Date: 2023-07-17 10:52+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Czech \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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index b0f10c62..8ae55171 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+0200\n" "PO-Revision-Date: 2024-09-09 19:39+0000\n" "Last-Translator: Victor Hampel \n" "Language-Team: German \n" @@ -610,9 +610,16 @@ msgstr "Im Moment ist es nicht möglich, Markdown-Tabellen zu verwenden: Die Üb #. 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 "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." +#. 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 @@ -3112,6 +3119,34 @@ msgstr "Dort können Sie den Chatbot aktivieren und verschiedene Optionen einste 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 +#, fuzzy, no-wrap +#| msgid "The bot can automatically moderate messages containing forbidden words." +msgid "The bot can automatically moderate duplicate messages." +msgstr "Der Chatbot kann automatisch Nachrichten moderieren, die verbotene Wörter enthalten." + +#. 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 "Konfiguration" + +#. type: Plain text +#: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md +#, fuzzy +#| 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 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 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/quotes.md #, no-wrap @@ -3146,16 +3181,11 @@ msgstr "Der Chatbot kann automatisch Nachrichten moderieren, die zu viele Sonder msgid "Special characters" msgstr "Sonderzeichen" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +#, fuzzy +#| msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.el.po b/support/documentation/po/livechat.el.po index 3d4a7de8..114a5b19 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.en.pot b/support/documentation/po/livechat.en.pot index 593d082b..5567a14b 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3432,6 +3438,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 @@ -3468,17 +3500,10 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md #, markdown-text -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.eo.po b/support/documentation/po/livechat.eo.po index 0c587b24..2b85485f 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.es.po b/support/documentation/po/livechat.es.po index b7c4d39f..30c9438b 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 @@ -3078,6 +3085,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 @@ -3112,17 +3145,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.eu.po b/support/documentation/po/livechat.eu.po index a29d96a3..ae63ce42 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.fa.po b/support/documentation/po/livechat.fa.po index 1dc3a4dd..d7ec7f9d 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.fi.po b/support/documentation/po/livechat.fi.po index 649d7d5c..703f932a 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.fr.po b/support/documentation/po/livechat.fr.po index 5ceeb9da..6f70f186 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 @@ -3188,6 +3195,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,18 +3260,11 @@ msgstr "Le bot peut automatiquement modérer les messages contenant des mots int msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/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 option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.gd.po b/support/documentation/po/livechat.gd.po index fe571b97..96f3a270 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.gl.po b/support/documentation/po/livechat.gl.po index 1bc44cf3..c9a5546e 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.hr.po b/support/documentation/po/livechat.hr.po index 4b304512..b1be0132 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+0200\n" "PO-Revision-Date: 2024-07-19 17:45+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \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 ### @@ -3087,6 +3092,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 +#, 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 @@ -3123,18 +3155,11 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/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 option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.hu.po b/support/documentation/po/livechat.hu.po index c43d0919..9e6f619c 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.is.po b/support/documentation/po/livechat.is.po index 3b9fe2f7..2e60fe7c 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.it.po b/support/documentation/po/livechat.it.po index 49ba9602..a415d739 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.ja.po b/support/documentation/po/livechat.ja.po index 23d55c97..34ae33e5 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3131,6 +3136,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 @@ -3167,18 +3199,11 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/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 option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.kab.po b/support/documentation/po/livechat.kab.po index 43b5b496..73a8f357 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.nb.po b/support/documentation/po/livechat.nb.po index a59df785..97dd5901 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.nl.po b/support/documentation/po/livechat.nl.po index 444827b6..f11df6bf 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.nn.po b/support/documentation/po/livechat.nn.po index 7368a673..ee23252c 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.oc.po b/support/documentation/po/livechat.oc.po index d1181d05..8e823e20 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.pl.po b/support/documentation/po/livechat.pl.po index d424c0a6..b360ab8e 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.pt.po b/support/documentation/po/livechat.pt.po index 78060b0d..9107e3e1 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.ru.po b/support/documentation/po/livechat.ru.po index 31e92f2e..f063c5f5 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.sq.po b/support/documentation/po/livechat.sq.po index 72d9ffa9..a54083f4 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.sv.po b/support/documentation/po/livechat.sv.po index 4920a586..9d85ecfb 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.th.po b/support/documentation/po/livechat.th.po index 0bcf82cf..8434cc0d 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.tok.po b/support/documentation/po/livechat.tok.po index 3ec7e6cf..3cc3056a 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.tr.po b/support/documentation/po/livechat.tr.po index c548bf36..27920254 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 ### @@ -3020,6 +3025,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 @@ -3054,16 +3084,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.uk.po b/support/documentation/po/livechat.uk.po index fb4a5491..3ce3e36c 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+0200\n" "PO-Revision-Date: 2023-07-17 10:53+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Ukrainian \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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.vi.po b/support/documentation/po/livechat.vi.po index ad35bb43..7be0ebd5 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.zh-Hans.po b/support/documentation/po/livechat.zh-Hans.po index 3aface24..19a12069 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 diff --git a/support/documentation/po/livechat.zh-Hant.po b/support/documentation/po/livechat.zh-Hant.po index fff13cc5..b29ed992 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-09-10 12:33+0200\n" +"POT-Creation-Date: 2024-09-11 10:35+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 ### @@ -3039,6 +3044,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 @@ -3073,16 +3103,9 @@ msgstr "" msgid "Special characters" msgstr "" -#. type: Title ## -#: 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/special_chars.md -msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" +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 From 1d0a7a97d2297262b6875241ab78af3e3524792d Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:39:16 +0200 Subject: [PATCH 043/120] Missing SPDX --- .github/dependabot.yml | 4 ++++ .../layouts/shortcodes/livechat_version_notice.html.license | 3 +++ 2 files changed, 7 insertions(+) create mode 100644 support/documentation/layouts/shortcodes/livechat_version_notice.html.license diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 86aebb38..966ba17a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 John Livingston +# +# SPDX-License-Identifier: AGPL-3.0-only + version: 2 updates: - package-ecosystem: npm diff --git a/support/documentation/layouts/shortcodes/livechat_version_notice.html.license b/support/documentation/layouts/shortcodes/livechat_version_notice.html.license new file mode 100644 index 00000000..b253ad42 --- /dev/null +++ b/support/documentation/layouts/shortcodes/livechat_version_notice.html.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 John Livingston + +SPDX-License-Identifier: AGPL-3.0-only From 33be9b3fc597f245aab09897a126168dea52139f Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 11:29:28 +0200 Subject: [PATCH 044/120] Update dependencies: * update @tsconfig/nodes12 to @tsconfig/node16 * Peertube >= 5.2.0 required --- .github/dependabot.yml | 3 --- CHANGELOG.md | 5 +++++ package-lock.json | 18 +++++++++--------- package.json | 4 ++-- server/tsconfig.json | 11 ++--------- 5 files changed, 18 insertions(+), 23 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 966ba17a..f21f8a6a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,9 +13,6 @@ updates: - dependency-name: typescript versions: - ">=5.6.0" # linting libs are not ready for 5.6 - - dependency-name: "@tsconfig/node12" - versions: - - ">=2.0.0" # breaks the config, must see why before updating - dependency-name: "@types/nodes" versions: - ">=17.0.0" # must be set to the Peertube required version. diff --git a/CHANGELOG.md b/CHANGELOG.md index 5815b9ed..180e079a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ TODO Before releasing: * update ConverseJS with latest merges. +### Importante Notes + +This version requires Peertube 5.2.0 or superior. +It also requires NodeJS 16 or superior (same as Peertube 5.2.0.) + ### New features * #131: Emoji only mode. diff --git a/package-lock.json b/package-lock.json index af229ece..9debac41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", "@stylistic/eslint-plugin": "^2.8.0", - "@tsconfig/node12": "^1.0.11", + "@tsconfig/node16": "^16.1.3", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", @@ -3698,10 +3698,10 @@ "node": ">=10.13.0" } }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "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": { @@ -15599,10 +15599,10 @@ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "@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": { diff --git a/package.json b/package.json index f7064277..1fad07a1 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", "@stylistic/eslint-plugin": "^2.8.0", - "@tsconfig/node12": "^1.0.11", + "@tsconfig/node16": "^16.1.3", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", @@ -76,7 +76,7 @@ "yaml": "^2.5.1" }, "engine": { - "peertube": ">=4.2.0" + "peertube": ">=5.2.0" }, "engines": { "npm": ">=7" 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, From 0b196805b21503ea20676a7c7b63de33fe0d18e9 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 11:54:50 +0200 Subject: [PATCH 045/120] Updating ConverseJS (v11 WIP) with latest fixes. --- CHANGELOG.md | 1 + conversejs/build-conversejs.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 180e079a..5790566d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ It also requires NodeJS 16 or superior (same as Peertube 5.2.0.) ### Minor changes and fixes +* Updating ConverseJS (v11 WIP) with latest fixes. * Various translation updates. * Using Typescript 5.5.4, and Eslint 8.57.0 (with new ruleset). * Fix race condition in bot/ctl. diff --git a/conversejs/build-conversejs.sh b/conversejs/build-conversejs.sh index a1f105f6..c0720784 100644 --- a/conversejs/build-conversejs.sh +++ b/conversejs/build-conversejs.sh @@ -29,8 +29,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="a910586fa83bd64db7182add6fc4bbf71cef0ae8" rootdir="$(pwd)" src_dir="$rootdir/conversejs" From b66b0aa315ebb87b7d7c9aa897a60af1a4f1488f Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 12:40:23 +0200 Subject: [PATCH 046/120] Fix emoji picker colors and size. --- CHANGELOG.md | 1 + .../custom/shared/styles/_peertubetheme.scss | 16 +++++++++---- conversejs/custom/shared/styles/livechat.scss | 24 +++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5790566d..6907a812 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ It also requires NodeJS 16 or superior (same as Peertube 5.2.0.) * Fix race condition in bot/ctl. * Various type improvements. * Update dependencies. +* Fix emoji picker colors and size. ## 11.0.1 diff --git a/conversejs/custom/shared/styles/_peertubetheme.scss b/conversejs/custom/shared/styles/_peertubetheme.scss index ff1018b7..7b936587 100644 --- a/conversejs/custom/shared/styles/_peertubetheme.scss +++ b/conversejs/custom/shared/styles/_peertubetheme.scss @@ -51,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 { @@ -60,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; diff --git a/conversejs/custom/shared/styles/livechat.scss b/conversejs/custom/shared/styles/livechat.scss index 1ae46aaf..bd398c4e 100644 --- a/conversejs/custom/shared/styles/livechat.scss +++ b/conversejs/custom/shared/styles/livechat.scss @@ -229,3 +229,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; + } + } + } + } +} From 35c486035eec97f15d40bb883baf18d403c8a86a Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:47:07 +0000 Subject: [PATCH 047/120] Translated using Weblate (English) Currently translated at 100.0% (311 of 311 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/en/ --- languages/en.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/languages/en.yml b/languages/en.yml index 6aa540f4..90574a22 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -419,8 +419,7 @@ 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_applytomoderators_label: "Also moderate - messages from moderators" +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. @@ -659,7 +658,8 @@ 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 before deleting messages. +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. From 91d6782a3ce320ae546522d82f7256c491528901 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:47:07 +0000 Subject: [PATCH 048/120] Translated using Weblate (German) Currently translated at 98.3% (306 of 311 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/de/ --- languages/de.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/languages/de.yml b/languages/de.yml index 83988726..712b064e 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -624,4 +624,5 @@ livechat_configuration_channel_special_chars_desc: "Wenn Sie diese Option aktivi 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. +feature_comes_with: Diese Funktion wird mit dem Livechatplugin Version X.X.X verfügbar + sein. From 7e2f6ede65c07d29b23fb3e3ec74a32dca6930e9 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 10:42:15 +0000 Subject: [PATCH 049/120] Translated using Weblate (French) Currently translated at 100.0% (311 of 311 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/fr/ --- languages/fr.yml | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/languages/fr.yml b/languages/fr.yml index d2f0aea1..e74e7d34 100644 --- a/languages/fr.yml +++ b/languages/fr.yml @@ -316,14 +316,14 @@ livechat_configuration_channel_forbidden_words_desc2: "Un mot ou une expression 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_retractation_reason_label: Raison -livechat_configuration_channel_retractation_reason_desc: Raison à affiche à côté - des messages supprimés +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_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,8 +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_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_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 +621,35 @@ prosody_firewall_name_desc: "Ne peut contenir que des caractères alphanumériqu 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" From 5e754b0103ab6ca67285c369e21bedb61056b9c4 Mon Sep 17 00:00:00 2001 From: "T.S" Date: Wed, 11 Sep 2024 10:27:08 +0000 Subject: [PATCH 050/120] Translated using Weblate (Japanese) Currently translated at 99.6% (310 of 311 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/ja/ --- languages/ja.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/languages/ja.yml b/languages/ja.yml index 52bff850..20fb2719 100644 --- a/languages/ja.yml +++ b/languages/ja.yml @@ -391,3 +391,8 @@ livechat_configuration_applytomoderators_desc: "初期状態では、モデレ 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" From 8944bb95d830b7925da401a2ea81e7a17864c30e Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 11 Sep 2024 19:21:57 +0200 Subject: [PATCH 051/120] New features: announcements WIP (#518). --- CHANGELOG.md | 3 +- build-client.js | 11 +- conversejs/build-conversejs.sh | 6 +- conversejs/builtin.ts | 4 + .../custom/shared/styles/_announcements.scss | 42 +++++ conversejs/custom/shared/styles/livechat.scss | 1 + conversejs/lib/@types/global.d.ts | 9 + conversejs/lib/converse-params.ts | 3 +- .../lib/plugins/livechat-announcements.ts | 156 ++++++++++++++++++ conversejs/loc.keys.js | 5 +- languages/en.yml | 4 + 11 files changed, 235 insertions(+), 9 deletions(-) create mode 100644 conversejs/custom/shared/styles/_announcements.scss create mode 100644 conversejs/lib/@types/global.d.ts create mode 100644 conversejs/lib/plugins/livechat-announcements.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 6907a812..d5095abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## 12.0.0 (Not Released Yet) TODO Before releasing: -* update ConverseJS with latest merges. +* update ConverseJS with latest merges (there are currently some known bugs). ### Importante Notes @@ -15,6 +15,7 @@ It also requires NodeJS 16 or superior (same as Peertube 5.2.0.) * #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. ### Minor changes and fixes 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/conversejs/build-conversejs.sh b/conversejs/build-conversejs.sh index c0720784..d752b37d 100644 --- a/conversejs/build-conversejs.sh +++ b/conversejs/build-conversejs.sh @@ -18,8 +18,8 @@ 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-11: using Converse upstream (v11 WIP). +CONVERSE_COMMIT="b5452466b90ff646e9ba5aa19e572a8ba958db83" # It is possible to use another repository, if we want some customization that are not upstream (yet): # CONVERSE_VERSION="livechat" @@ -30,7 +30,7 @@ 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-12.0.0" -CONVERSE_COMMIT="a910586fa83bd64db7182add6fc4bbf71cef0ae8" +# CONVERSE_COMMIT="" rootdir="$(pwd)" src_dir="$rootdir/conversejs" diff --git a/conversejs/builtin.ts b/conversejs/builtin.ts index 28cfc320..19ff31f0 100644 --- a/conversejs/builtin.ts +++ b/conversejs/builtin.ts @@ -23,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 { @@ -37,6 +38,7 @@ declare global { html: Function sizzle: Function dayjs: Function + __: Function } } initConversePlugins: typeof initConversePlugins @@ -76,6 +78,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 diff --git a/conversejs/custom/shared/styles/_announcements.scss b/conversejs/custom/shared/styles/_announcements.scss new file mode 100644 index 00000000..12b5b863 --- /dev/null +++ b/conversejs/custom/shared/styles/_announcements.scss @@ -0,0 +1,42 @@ +/* + * 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; + + converse-chat-message-body::first-line { + // Different color for the title line + color: #FFF; + background-color: #2ab218; + text-align: center; + } + } + + &.livechat-highlight { + --livechat-announcement-color: #000; + --livechat-announcement-background-color: #dce8fa; + --livechat-announcement-border-color: #3075e5; + } + + &.livechat-announcement, + &.livechat-highlight { + 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: 2em; + } + } + } +} diff --git a/conversejs/custom/shared/styles/livechat.scss b/conversejs/custom/shared/styles/livechat.scss index bd398c4e..cc3797e2 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 { diff --git a/conversejs/lib/@types/global.d.ts b/conversejs/lib/@types/global.d.ts new file mode 100644 index 00000000..a15031a8 --- /dev/null +++ b/conversejs/lib/@types/global.d.ts @@ -0,0 +1,9 @@ +// 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_STANDARD: string +declare const LOC_ANNOUNCEMENTS_MESSAGE_TYPE_ANNOUNCEMENT: string +declare const LOC_ANNOUNCEMENTS_MESSAGE_TYPE_HIGHLIGHT: string 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..2d4a8a3d --- /dev/null +++ b/conversejs/lib/plugins/livechat-announcements.ts @@ -0,0 +1,156 @@ +// SPDX-FileCopyrightText: 2024 John Livingston +// +// SPDX-License-Identifier: AGPL-3.0-only + +/** + * 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 + const { __ } = _converse + + // This is a closure variable, to get the current form status when sending a message. + let currentAnnouncementType: string | undefined + + // Overloading the MUCMessageForm to handle the announcement type field (if present). + 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]') + currentAnnouncementType = announcementSelect?.selectedOptions?.[0]?.value || undefined + try { + await super.onFormSubmitted(ev) + if (announcementSelect) { announcementSelect.selectedIndex = 0 } // set back to default + } catch (err) { + console.log(err) + } + currentAnnouncementType = undefined + } + } + _converse.api.elements.define('converse-muc-message-form', MUCMessageFormloaded) + } + + // Toolbar: adding the announcement type field (if user has rights). + _converse.api.listen.on('getToolbarButtons', getToolbarButtons.bind(this)) + + // When current user affiliation changes, we must refresh the toolbar. + _converse.api.listen.on('chatRoomInitialized', (muc: any) => { + 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?.()) + }) + }) + + _converse.api.listen.on('getOutgoingMessageAttributes', (chatbox: any, attrs: any) => { + // For outgoing message, adding the announcement type if there is a current one. + if (!currentAnnouncementType) { return attrs } + + attrs.livechat_announcement_type = currentAnnouncementType + if (currentAnnouncementType === 'announcement') { + attrs.body = '* ' + __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_ANNOUNCEMENT) + ' * \n' + attrs.body + } + return attrs + }) + + _converse.api.listen.on('createMessageStanza', async (chat: any, data: any) => { + // Outgoing messages: adding an attribute on body for announcements. + 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 + }) + + _converse.api.listen.on('parseMUCMessage', (stanza: any, attrs: any) => { + // Incoming messages: checking if there is an announcement attribute + 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. + 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 = this.model.get('livechat_announcement_type') + if (!announcementType) { + return extraClasses + } + switch (announcementType) { + case 'announcement': + extraClasses += ' livechat-announcement' + break + case 'highlight': + extraClasses += ' livechat-highlight' + break + } + return extraClasses + } + } + _converse.api.elements.define('converse-chat-message', MessageOverloaded) + } + } +} + +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 i18nStandard = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_STANDARD) + const i18nAnnouncement = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_ANNOUNCEMENT) + const i18nHighlight = __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_HIGHLIGHT) + + 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 +} diff --git a/conversejs/loc.keys.js b/conversejs/loc.keys.js index 997726db..1a1f0d4e 100644 --- a/conversejs/loc.keys.js +++ b/conversejs/loc.keys.js @@ -63,7 +63,10 @@ const locKeys = [ 'search_occupant_message', 'message_search', 'message_search_original_nick', - 'emoji_only_info' + 'emoji_only_info', + 'announcements_message_type_standard', + 'announcements_message_type_announcement', + 'announcements_message_type_highlight' ] module.exports = locKeys diff --git a/languages/en.yml b/languages/en.yml index 90574a22..d4ba3f5c 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -670,3 +670,7 @@ livechat_configuration_channel_no_duplicate_desc: | 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_standard: Standard message +announcements_message_type_announcement: Announcement +announcements_message_type_highlight: Highlighted message From d92bf9073edb244388b3dc86a8c123bf0275a98a Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 12 Sep 2024 11:17:44 +0200 Subject: [PATCH 052/120] New features: announcements WIP (#518): * Front-end implementation finished. * Refactoring. --- .../custom/shared/styles/_announcements.scss | 35 ++- conversejs/lib/@types/global.d.ts | 2 + .../lib/plugins/livechat-announcements.ts | 254 +++++++++++------- conversejs/loc.keys.js | 4 +- languages/en.yml | 6 +- 5 files changed, 197 insertions(+), 104 deletions(-) diff --git a/conversejs/custom/shared/styles/_announcements.scss b/conversejs/custom/shared/styles/_announcements.scss index 12b5b863..deeddd5c 100644 --- a/conversejs/custom/shared/styles/_announcements.scss +++ b/conversejs/custom/shared/styles/_announcements.scss @@ -13,13 +13,6 @@ --livechat-announcement-color: #000; --livechat-announcement-background-color: #dbf2d8; --livechat-announcement-border-color: #2ab218; - - converse-chat-message-body::first-line { - // Different color for the title line - color: #FFF; - background-color: #2ab218; - text-align: center; - } } &.livechat-highlight { @@ -28,15 +21,39 @@ --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-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: 2em; + 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/lib/@types/global.d.ts b/conversejs/lib/@types/global.d.ts index a15031a8..4c24d9e1 100644 --- a/conversejs/lib/@types/global.d.ts +++ b/conversejs/lib/@types/global.d.ts @@ -4,6 +4,8 @@ // 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/plugins/livechat-announcements.ts b/conversejs/lib/plugins/livechat-announcements.ts index 2d4a8a3d..8c52cb67 100644 --- a/conversejs/lib/plugins/livechat-announcements.ts +++ b/conversejs/lib/plugins/livechat-announcements.ts @@ -2,6 +2,10 @@ // // 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. @@ -15,108 +19,60 @@ export const livechatAnnouncementsPlugin = { dependencies: ['converse-muc', 'converse-muc-views'], initialize: function (this: any) { const _converse = this._converse - const { __ } = _converse // This is a closure variable, to get the current form status when sending a message. - let currentAnnouncementType: string | undefined - - // Overloading the MUCMessageForm to handle the announcement type field (if present). - 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]') - currentAnnouncementType = announcementSelect?.selectedOptions?.[0]?.value || undefined - try { - await super.onFormSubmitted(ev) - if (announcementSelect) { announcementSelect.selectedIndex = 0 } // set back to default - } catch (err) { - console.log(err) - } - currentAnnouncementType = undefined - } - } - _converse.api.elements.define('converse-muc-message-form', MUCMessageFormloaded) + const current: Current = { + announcementType: undefined } - // Toolbar: adding the announcement type field (if user has rights). + overrideMUCMessageForm(_converse, current) + _converse.api.listen.on('getToolbarButtons', getToolbarButtons.bind(this)) - // When current user affiliation changes, we must refresh the toolbar. - _converse.api.listen.on('chatRoomInitialized', (muc: any) => { - 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?.()) - }) - }) + _converse.api.listen.on('chatRoomInitialized', (muc: any) => onAffiliationChange(_converse, muc)) _converse.api.listen.on('getOutgoingMessageAttributes', (chatbox: any, attrs: any) => { - // For outgoing message, adding the announcement type if there is a current one. - if (!currentAnnouncementType) { return attrs } - - attrs.livechat_announcement_type = currentAnnouncementType - if (currentAnnouncementType === 'announcement') { - attrs.body = '* ' + __(LOC_ANNOUNCEMENTS_MESSAGE_TYPE_ANNOUNCEMENT) + ' * \n' + attrs.body - } - return attrs + return onGetOutgoingMessageAttributes(current, _converse, chatbox, attrs) }) - _converse.api.listen.on('createMessageStanza', async (chat: any, data: any) => { - // Outgoing messages: adding an attribute on body for announcements. - const { message, stanza } = data - const announcementType = message.get('livechat_announcement_type') - if (!announcementType) { - return data - } + _converse.api.listen.on('createMessageStanza', createMessageStanza) - stanza.tree().querySelector('message body')?.setAttribute('x-livechat-announcement-type', announcementType) - return data - }) + _converse.api.listen.on('parseMUCMessage', parseMUCMessage) - _converse.api.listen.on('parseMUCMessage', (stanza: any, attrs: any) => { - // Incoming messages: checking if there is an announcement attribute - 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. - 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 = this.model.get('livechat_announcement_type') - if (!announcementType) { - return extraClasses - } - switch (announcementType) { - case 'announcement': - extraClasses += ' livechat-announcement' - break - case 'highlight': - extraClasses += ' livechat-highlight' - break - } - return extraClasses - } - } - _converse.api.elements.define('converse-chat-message', MessageOverloaded) - } + overrideMessage(_converse) } } +/** + * Overloads the MUCMessageForm to handle the announcement type field (if present) when sending a 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 + } + } + _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 @@ -131,15 +87,26 @@ function getToolbarButtons (this: any, toolbarEl: any, buttons: any[]): Paramete 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`` + const select = html` + + + ` if (_converse.api.settings.get('visible_toolbar_buttons').emoji) { // Emojis should be the first entry, so adding select in second place. @@ -154,3 +121,106 @@ function getToolbarButtons (this: any, toolbarEl: any, buttons: any[]): Paramete } 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/loc.keys.js b/conversejs/loc.keys.js index 1a1f0d4e..019c63bd 100644 --- a/conversejs/loc.keys.js +++ b/conversejs/loc.keys.js @@ -64,9 +64,11 @@ const locKeys = [ 'message_search', '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_highlight', + 'announcements_message_type_warning' ] module.exports = locKeys diff --git a/languages/en.yml b/languages/en.yml index d4ba3f5c..81cce586 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -671,6 +671,8 @@ 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_standard: Standard message +announcements_message_type: Message type +announcements_message_type_standard: Standard announcements_message_type_announcement: Announcement -announcements_message_type_highlight: Highlighted message +announcements_message_type_highlight: Highlight +announcements_message_type_warning: Warning From f0088671eaa162c060c9da47eecdb93f40619386 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 12 Sep 2024 11:44:35 +0200 Subject: [PATCH 053/120] New features: announcements WIP (#518): * prevent annoucement spoofing on backend. --- .../README.markdown | 11 +++++ ...mod_muc_peertubelivechat_announcements.lua | 44 +++++++++++++++++++ server/lib/prosody/config/content.ts | 1 + 3 files changed, 56 insertions(+) create mode 100644 prosody-modules/mod_muc_peertubelivechat_announcements/README.markdown create mode 100644 prosody-modules/mod_muc_peertubelivechat_announcements/mod_muc_peertubelivechat_announcements.lua 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/server/lib/prosody/config/content.ts b/server/lib/prosody/config/content.ts index 9944d590..6126f2ff 100644 --- a/server/lib/prosody/config/content.ts +++ b/server/lib/prosody/config/content.ts @@ -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') From 4e436c00f00d72eeb11f46a4c2c3ef1e02c9dcf0 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 12 Sep 2024 12:07:55 +0200 Subject: [PATCH 054/120] New features: announcements WIP (#518): * handling message correction. --- conversejs/builtin.ts | 5 ++++ .../lib/plugins/livechat-announcements.ts | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/conversejs/builtin.ts b/conversejs/builtin.ts index 19ff31f0..08b490c5 100644 --- a/conversejs/builtin.ts +++ b/conversejs/builtin.ts @@ -39,6 +39,11 @@ declare global { sizzle: Function dayjs: Function __: Function + u: { + hasClass: Function + addClass: Function + removeClass: Function + } } } initConversePlugins: typeof initConversePlugins diff --git a/conversejs/lib/plugins/livechat-announcements.ts b/conversejs/lib/plugins/livechat-announcements.ts index 8c52cb67..0f66f045 100644 --- a/conversejs/lib/plugins/livechat-announcements.ts +++ b/conversejs/lib/plugins/livechat-announcements.ts @@ -45,6 +45,8 @@ export const livechatAnnouncementsPlugin = { /** * 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'] @@ -61,6 +63,27 @@ function overrideMUCMessageForm (_converse: any, current: Current): void { } 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) } From 9824435b6ebc62f01c16689291887b2b96788f09 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 12 Sep 2024 12:54:16 +0200 Subject: [PATCH 055/120] New features: announcements WIP (#518): * Documentation. --- .../user/streamers/announcements.md | 31 ++++++++ .../content/en/images/announcements.png | Bin 0 -> 127134 bytes support/documentation/po/livechat.ar.po | 64 ++++++++++++++- support/documentation/po/livechat.ca.po | 64 ++++++++++++++- support/documentation/po/livechat.cs.po | 64 ++++++++++++++- support/documentation/po/livechat.de.po | 66 +++++++++++++++- support/documentation/po/livechat.el.po | 64 ++++++++++++++- support/documentation/po/livechat.en.pot | 74 +++++++++++++++++- support/documentation/po/livechat.eo.po | 64 ++++++++++++++- support/documentation/po/livechat.es.po | 64 ++++++++++++++- support/documentation/po/livechat.eu.po | 64 ++++++++++++++- support/documentation/po/livechat.fa.po | 64 ++++++++++++++- support/documentation/po/livechat.fi.po | 64 ++++++++++++++- support/documentation/po/livechat.fr.po | 66 +++++++++++++++- support/documentation/po/livechat.gd.po | 64 ++++++++++++++- support/documentation/po/livechat.gl.po | 64 ++++++++++++++- support/documentation/po/livechat.hr.po | 64 ++++++++++++++- support/documentation/po/livechat.hu.po | 64 ++++++++++++++- support/documentation/po/livechat.is.po | 64 ++++++++++++++- support/documentation/po/livechat.it.po | 64 ++++++++++++++- support/documentation/po/livechat.ja.po | 64 ++++++++++++++- support/documentation/po/livechat.kab.po | 64 ++++++++++++++- support/documentation/po/livechat.nb.po | 64 ++++++++++++++- support/documentation/po/livechat.nl.po | 64 ++++++++++++++- support/documentation/po/livechat.nn.po | 64 ++++++++++++++- support/documentation/po/livechat.oc.po | 64 ++++++++++++++- support/documentation/po/livechat.pl.po | 64 ++++++++++++++- support/documentation/po/livechat.pt.po | 64 ++++++++++++++- support/documentation/po/livechat.ru.po | 64 ++++++++++++++- support/documentation/po/livechat.sq.po | 64 ++++++++++++++- support/documentation/po/livechat.sv.po | 64 ++++++++++++++- support/documentation/po/livechat.th.po | 64 ++++++++++++++- support/documentation/po/livechat.tok.po | 64 ++++++++++++++- support/documentation/po/livechat.tr.po | 62 +++++++++++++++ support/documentation/po/livechat.uk.po | 64 ++++++++++++++- support/documentation/po/livechat.vi.po | 64 ++++++++++++++- support/documentation/po/livechat.zh-Hans.po | 64 ++++++++++++++- support/documentation/po/livechat.zh-Hant.po | 64 ++++++++++++++- 38 files changed, 2312 insertions(+), 35 deletions(-) create mode 100644 support/documentation/content/en/documentation/user/streamers/announcements.md create mode 100644 support/documentation/content/en/images/announcements.png 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/images/announcements.png b/support/documentation/content/en/images/announcements.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cb1656cd5d5252de249d1b16fcd07af62015ff GIT binary patch literal 127134 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
    V6E;)UBarB&o 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\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" From 04768347f2dcc17e63ba9bfdc2244c9bd7907ace Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Mon, 16 Sep 2024 10:12:45 +0000 Subject: [PATCH 074/120] Translated using Weblate (Croatian) Currently translated at 11.4% (103 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/hr/ --- support/documentation/po/livechat.hr.po | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/support/documentation/po/livechat.hr.po b/support/documentation/po/livechat.hr.po index c7c56dbc..985608c4 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.po @@ -7,15 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-07-19 17:45+0000\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 @@ -3164,7 +3166,7 @@ msgstr "" #: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md #, no-wrap msgid "No duplicate message" -msgstr "" +msgstr "Bez duplih poruka" #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md @@ -3370,7 +3372,7 @@ msgstr "Dokumentacija dodataka" #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md #, no-wrap msgid "Emojis only mode" -msgstr "" +msgstr "„Samo emoji” modus" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/emojis_only.md @@ -3738,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 From 583f5811929033fe67c3a5132dad7f80eda8d174 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 17 Sep 2024 10:03:57 +0200 Subject: [PATCH 075/120] Update ConverseJS + CSS fix. --- conversejs/build-conversejs.sh | 4 ++-- conversejs/custom/shared/styles/livechat.scss | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/conversejs/build-conversejs.sh b/conversejs/build-conversejs.sh index d752b37d..acc1ed9c 100644 --- a/conversejs/build-conversejs.sh +++ b/conversejs/build-conversejs.sh @@ -18,8 +18,8 @@ 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-11: using Converse upstream (v11 WIP). -CONVERSE_COMMIT="b5452466b90ff646e9ba5aa19e572a8ba958db83" +# 2024-09-17: using Converse upstream (v11 WIP). +CONVERSE_COMMIT="07dc6f4f5da5890b02a46a8a2f2d0498649786bc" # It is possible to use another repository, if we want some customization that are not upstream (yet): # CONVERSE_VERSION="livechat" diff --git a/conversejs/custom/shared/styles/livechat.scss b/conversejs/custom/shared/styles/livechat.scss index cc3797e2..a269f538 100644 --- a/conversejs/custom/shared/styles/livechat.scss +++ b/conversejs/custom/shared/styles/livechat.scss @@ -203,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; } } } From 1b53a6ec2da7d70c0bb8f9227ff21374c588daf7 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 17 Sep 2024 10:34:11 +0200 Subject: [PATCH 076/120] Fix #300: prosody tweaking. --- CHANGELOG.md | 5 ++++- server/lib/prosody/config/content.ts | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77ba60a5..aaeb672b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,9 @@ TODO Before releasing: ### Importante Notes This version requires Peertube 5.2.0 or superior. -It also requires NodeJS 16 or superior (same as Peertube 5.2.0.) +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 @@ -21,6 +23,7 @@ It also requires NodeJS 16 or superior (same as Peertube 5.2.0.) ### 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. diff --git a/server/lib/prosody/config/content.ts b/server/lib/prosody/config/content.ts index 6126f2ff..2cbf3ca6 100644 --- a/server/lib/prosody/config/content.ts +++ b/server/lib/prosody/config/content.ts @@ -600,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() From 84b21dde6d4c495d216298a27bd010c73e9183d3 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 17 Sep 2024 11:38:18 +0200 Subject: [PATCH 077/120] Fix: moderation delay max value was not correctly handled. --- CHANGELOG.md | 1 + prosody-modules/mod_muc_moderation_delay/config.lib.lua | 3 +++ 2 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaeb672b..2befddf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ If you use the "system Prosody", you should update to Prosody 0.12.4, and Lua 5. * Various type improvements. * Update dependencies. * Fix emoji picker colors and size. +* Fix: moderation delay max value was not correctly handled. ## 11.0.1 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 From abfdb0f08d8fd05e4ba9b8088bbe9433b04fa48d Mon Sep 17 00:00:00 2001 From: John Livingston Date: Wed, 25 Sep 2024 10:19:45 +0200 Subject: [PATCH 078/120] Fix dependabot config: use versioning-strategy: increase --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 74d9f371..558972c8 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,6 +9,7 @@ updates: schedule: interval: daily open-pull-requests-limit: 10 + versioning-strategy: increase ignore: - dependency-name: typescript versions: From c94f23fbe56e0e779d2b6372d2ae8ae9fbdb3e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Stankiewicz?= Date: Tue, 17 Sep 2024 17:44:09 +0000 Subject: [PATCH 079/120] Translated using Weblate (Polish) Currently translated at 30.3% (96 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/pl/ --- languages/pl.yml | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/languages/pl.yml b/languages/pl.yml index 4e2bcaac..08187c62 100644 --- a/languages/pl.yml +++ b/languages/pl.yml @@ -72,3 +72,52 @@ 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" From b2f859519847af97dfa3d8fe6cf97bd507312150 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 8 Oct 2024 16:05:29 +0200 Subject: [PATCH 080/120] Dependabot: trying grouping strategy. --- .github/dependabot.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 558972c8..8106cec5 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,7 +9,16 @@ updates: 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: From 1bb6f6fc41aed344c84cb023a04e3bfc0f40dcc5 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 8 Oct 2024 16:17:01 +0200 Subject: [PATCH 081/120] update package.json --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index f954c506..7f916719 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "@typescript-eslint/parser": "^8.4.0", "commander": "^12.1.0", "esbuild": "^0.23.1", - "eslint": "^8.57.0", + "eslint": "^8.57.1", "eslint-config-love": "^66.0.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", @@ -55,7 +55,7 @@ "stylelint-config-standard-scss": "^13.1.0", "svgo": "^3.3.2", "typescript": "^5.5.4", - "typescript-eslint": "^8.5.0", + "typescript-eslint": "^8.6.0", "yaml": "^2.5.1" }, "engines": { diff --git a/package.json b/package.json index 709ac07d..64eae638 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "@typescript-eslint/parser": "^8.4.0", "commander": "^12.1.0", "esbuild": "^0.23.1", - "eslint": "^8.57.0", + "eslint": "^8.57.1", "eslint-config-love": "^66.0.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", @@ -72,7 +72,7 @@ "stylelint-config-standard-scss": "^13.1.0", "svgo": "^3.3.2", "typescript": "^5.5.4", - "typescript-eslint": "^8.5.0", + "typescript-eslint": "^8.6.0", "yaml": "^2.5.1" }, "engine": { From 1aa406cae8ff4b8aab775a5df583a4a7b9b26a07 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:20:27 +0000 Subject: [PATCH 082/120] Bump the minor-and-patch group with 9 updates Bumps the minor-and-patch group with 9 updates: | Package | From | To | | --- | --- | --- | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.10.0` | `9.12.0` | | [@lit/context](https://github.com/lit/lit/tree/HEAD/packages/context) | `1.1.2` | `1.1.3` | | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) | `2.8.0` | `2.9.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `16.18.108` | `16.18.113` | | [esbuild](https://github.com/evanw/esbuild) | `0.23.1` | `0.24.0` | | [globals](https://github.com/sindresorhus/globals) | `15.9.0` | `15.10.0` | | [lit](https://github.com/lit/lit/tree/HEAD/packages/lit) | `3.2.0` | `3.2.1` | | [sass](https://github.com/sass/dart-sass) | `1.78.0` | `1.79.4` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.6.0` | `8.8.1` | Updates `@eslint/js` from 9.10.0 to 9.12.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.12.0/packages/js) Updates `@lit/context` from 1.1.2 to 1.1.3 - [Release notes](https://github.com/lit/lit/releases) - [Changelog](https://github.com/lit/lit/blob/main/packages/context/CHANGELOG.md) - [Commits](https://github.com/lit/lit/commits/@lit/context@1.1.3/packages/context) Updates `@stylistic/eslint-plugin` from 2.8.0 to 2.9.0 - [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases) - [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v2.9.0/packages/eslint-plugin) Updates `@types/node` from 16.18.108 to 16.18.113 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `esbuild` from 0.23.1 to 0.24.0 - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.23.1...v0.24.0) Updates `globals` from 15.9.0 to 15.10.0 - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](https://github.com/sindresorhus/globals/compare/v15.9.0...v15.10.0) Updates `lit` from 3.2.0 to 3.2.1 - [Release notes](https://github.com/lit/lit/releases) - [Changelog](https://github.com/lit/lit/blob/main/packages/lit/CHANGELOG.md) - [Commits](https://github.com/lit/lit/commits/lit@3.2.1/packages/lit) Updates `sass` from 1.78.0 to 1.79.4 - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.78.0...1.79.4) Updates `typescript-eslint` from 8.6.0 to 8.8.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.8.1/packages/typescript-eslint) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: "@lit/context" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: "@stylistic/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: esbuild dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: globals dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: lit dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: sass dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: typescript-eslint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 801 ++++++++++++++++++++++++---------------------- package.json | 18 +- 2 files changed, 431 insertions(+), 388 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f916719..e2f6f50a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,13 +21,13 @@ "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { - "@eslint/js": "^9.10.0", + "@eslint/js": "^9.12.0", "@lit-labs/motion": "^1.0.7", - "@lit/context": "^1.1.2", + "@lit/context": "^1.1.3", "@lit/task": "^1.0.1", "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@stylistic/eslint-plugin": "^2.8.0", + "@stylistic/eslint-plugin": "^2.9.0", "@tsconfig/node16": "^16.1.3", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", @@ -35,27 +35,27 @@ "@types/express": "^4.17.21", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", - "@types/node": "^16.18.108", + "@types/node": "^16.18.113", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", "commander": "^12.1.0", - "esbuild": "^0.23.1", + "esbuild": "^0.24.0", "eslint": "^8.57.1", "eslint-config-love": "^66.0.0", "eslint-plugin-lit": "^1.15.0", - "globals": "^15.9.0", - "lit": "^3.2.0", + "globals": "^15.10.0", + "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.78.0", + "sass": "^1.79.4", "sharp": "^0.33.5", "stylelint": "^16.9.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.6.0", + "typescript-eslint": "^8.8.1", "yaml": "^2.5.1" }, "engines": { @@ -1612,9 +1612,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", "cpu": [ "ppc64" ], @@ -1628,9 +1628,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "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" ], @@ -1644,9 +1644,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "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" ], @@ -1660,9 +1660,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "cpu": [ "x64" ], @@ -1676,9 +1676,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "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" ], @@ -1692,9 +1692,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "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" ], @@ -1708,9 +1708,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "cpu": [ "arm64" ], @@ -1724,9 +1724,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "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" ], @@ -1740,9 +1740,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "cpu": [ "arm" ], @@ -1756,9 +1756,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "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" ], @@ -1772,9 +1772,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "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" ], @@ -1788,9 +1788,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "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" ], @@ -1804,9 +1804,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "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" ], @@ -1820,9 +1820,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "cpu": [ "ppc64" ], @@ -1836,9 +1836,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "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" ], @@ -1852,9 +1852,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "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" ], @@ -1868,9 +1868,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "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" ], @@ -1884,9 +1884,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "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" ], @@ -1900,9 +1900,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", "cpu": [ "arm64" ], @@ -1916,9 +1916,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "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" ], @@ -1932,9 +1932,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "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" ], @@ -1948,9 +1948,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "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" ], @@ -1964,9 +1964,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "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" ], @@ -1980,9 +1980,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ "x64" ], @@ -2081,9 +2081,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", - "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", + "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2573,9 +2573,9 @@ "dev": true }, "node_modules/@lit/context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.2.tgz", - "integrity": "sha512-S0nw2C6Tkm7fVX5TGYqeROGD+Z9Coa2iFpW+ysYBDH3YvCqOY3wVQvSgwbaliLJkjTnSEYCBe9qFqKV8WUFpVw==", + "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" @@ -3619,14 +3619,14 @@ "dev": true }, "node_modules/@stylistic/eslint-plugin": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.8.0.tgz", - "integrity": "sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.9.0.tgz", + "integrity": "sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^8.4.0", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", + "@typescript-eslint/utils": "^8.8.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", "estraverse": "^5.3.0", "picomatch": "^4.0.2" }, @@ -3638,9 +3638,9 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3650,14 +3650,14 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/espree": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, "dependencies": { "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3926,9 +3926,9 @@ } }, "node_modules/@types/node": { - "version": "16.18.108", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.108.tgz", - "integrity": "sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==" + "version": "16.18.113", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.113.tgz", + "integrity": "sha512-4jHxcEzSXpF1cBNxogs5FVbVSFSKo50sFCn7Xg7vmjJTbWFWgeuHW3QnoINlfmfG++MFR/q97RZE5RQXKeT+jg==" }, "node_modules/@types/qs": { "version": "6.9.7", @@ -4005,16 +4005,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", - "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", + "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.6.0", - "@typescript-eslint/type-utils": "8.6.0", - "@typescript-eslint/utils": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/type-utils": "8.8.1", + "@typescript-eslint/utils": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4038,15 +4038,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", - "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", + "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.6.0", - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/typescript-estree": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4" }, "engines": { @@ -4089,13 +4089,13 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", - "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", + "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0" + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4106,13 +4106,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", - "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", + "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.6.0", - "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/utils": "8.8.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4153,9 +4153,9 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", - "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", + "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4166,13 +4166,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", - "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", + "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4253,15 +4253,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", - "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", + "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.6.0", - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/typescript-estree": "8.6.0" + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4275,12 +4275,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", - "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz", + "integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/types": "8.8.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4753,7 +4753,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" @@ -5022,7 +5022,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" } @@ -5373,7 +5373,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", @@ -6439,9 +6439,9 @@ } }, "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "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": { @@ -6451,30 +6451,30 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@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": { @@ -7708,7 +7708,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": [ @@ -7896,9 +7895,9 @@ } }, "node_modules/globals": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", - "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "version": "15.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", + "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", "dev": true, "engines": { "node": ">=18" @@ -8392,7 +8391,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" }, @@ -8827,9 +8826,9 @@ "dev": true }, "node_modules/lit": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz", - "integrity": "sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==", + "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": "^2.0.4", @@ -10366,7 +10365,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" }, @@ -10666,12 +10665,12 @@ } }, "node_modules/sass": { - "version": "1.78.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", - "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "version": "1.79.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz", + "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", + "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, @@ -10682,6 +10681,34 @@ "node": ">=14.0.0" } }, + "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": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -12241,14 +12268,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz", - "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz", + "integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.6.0", - "@typescript-eslint/parser": "8.6.0", - "@typescript-eslint/utils": "8.6.0" + "@typescript-eslint/eslint-plugin": "8.8.1", + "@typescript-eslint/parser": "8.8.1", + "@typescript-eslint/utils": "8.8.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -14040,170 +14067,170 @@ } }, "@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "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.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "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 }, @@ -14266,9 +14293,9 @@ } }, "@eslint/js": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", - "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", + "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", "dev": true }, "@humanwhocodes/config-array": { @@ -14527,9 +14554,9 @@ "dev": true }, "@lit/context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.2.tgz", - "integrity": "sha512-S0nw2C6Tkm7fVX5TGYqeROGD+Z9Coa2iFpW+ysYBDH3YvCqOY3wVQvSgwbaliLJkjTnSEYCBe9qFqKV8WUFpVw==", + "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" @@ -15359,33 +15386,33 @@ "dev": true }, "@stylistic/eslint-plugin": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.8.0.tgz", - "integrity": "sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.9.0.tgz", + "integrity": "sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==", "dev": true, "requires": { - "@typescript-eslint/utils": "^8.4.0", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", + "@typescript-eslint/utils": "^8.8.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", "estraverse": "^5.3.0", "picomatch": "^4.0.2" }, "dependencies": { "eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true }, "espree": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, "requires": { "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.1.0" } }, "picomatch": { @@ -15638,9 +15665,9 @@ } }, "@types/node": { - "version": "16.18.108", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.108.tgz", - "integrity": "sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==" + "version": "16.18.113", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.113.tgz", + "integrity": "sha512-4jHxcEzSXpF1cBNxogs5FVbVSFSKo50sFCn7Xg7vmjJTbWFWgeuHW3QnoINlfmfG++MFR/q97RZE5RQXKeT+jg==" }, "@types/qs": { "version": "6.9.7", @@ -15716,16 +15743,16 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", - "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", + "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.6.0", - "@typescript-eslint/type-utils": "8.6.0", - "@typescript-eslint/utils": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/type-utils": "8.8.1", + "@typescript-eslint/utils": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -15733,15 +15760,15 @@ } }, "@typescript-eslint/parser": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", - "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", + "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "8.6.0", - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/typescript-estree": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4" }, "dependencies": { @@ -15763,23 +15790,23 @@ } }, "@typescript-eslint/scope-manager": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", - "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", + "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", "dev": true, "requires": { - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0" + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1" } }, "@typescript-eslint/type-utils": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", - "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", + "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "8.6.0", - "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/utils": "8.8.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -15802,19 +15829,19 @@ } }, "@typescript-eslint/types": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", - "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", + "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", - "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", + "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", "dev": true, "requires": { - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -15865,24 +15892,24 @@ } }, "@typescript-eslint/utils": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", - "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", + "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.6.0", - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/typescript-estree": "8.6.0" + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1" } }, "@typescript-eslint/visitor-keys": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", - "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz", + "integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==", "dev": true, "requires": { - "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/types": "8.8.1", "eslint-visitor-keys": "^3.4.3" } }, @@ -16237,7 +16264,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" @@ -16443,7 +16470,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", @@ -16688,7 +16715,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", @@ -17510,35 +17537,35 @@ } }, "esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "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/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@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": { @@ -18447,7 +18474,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": { @@ -18570,9 +18596,9 @@ } }, "globals": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", - "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "version": "15.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", + "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", "dev": true }, "globalthis": { @@ -18921,7 +18947,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" } @@ -19225,9 +19251,9 @@ "dev": true }, "lit": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz", - "integrity": "sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==", + "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": "^2.0.4", @@ -20325,7 +20351,7 @@ "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" } @@ -20543,14 +20569,31 @@ "integrity": "sha512-pVlvK5ysevz8MzybRnDIa2YMxn0OJ7b9lDiWhMoaKPoJ7YkAg/7YtNjUgaYzElkwHxsw8dBMhaEn7UP6zxEwPg==" }, "sass": { - "version": "1.78.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", - "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "version": "1.79.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz", + "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==", "dev": true, "requires": { - "chokidar": ">=3.0.0 <4.0.0", + "chokidar": "^4.0.0", "immutable": "^4.0.0", "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": { @@ -21668,14 +21711,14 @@ "dev": true }, "typescript-eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz", - "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz", + "integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "8.6.0", - "@typescript-eslint/parser": "8.6.0", - "@typescript-eslint/utils": "8.6.0" + "@typescript-eslint/eslint-plugin": "8.8.1", + "@typescript-eslint/parser": "8.8.1", + "@typescript-eslint/utils": "8.8.1" } }, "uid-safe": { diff --git a/package.json b/package.json index 64eae638..4c1726e2 100644 --- a/package.json +++ b/package.json @@ -38,13 +38,13 @@ "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { - "@eslint/js": "^9.10.0", + "@eslint/js": "^9.12.0", "@lit-labs/motion": "^1.0.7", - "@lit/context": "^1.1.2", + "@lit/context": "^1.1.3", "@lit/task": "^1.0.1", "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@stylistic/eslint-plugin": "^2.8.0", + "@stylistic/eslint-plugin": "^2.9.0", "@tsconfig/node16": "^16.1.3", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", @@ -52,27 +52,27 @@ "@types/express": "^4.17.21", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", - "@types/node": "^16.18.108", + "@types/node": "^16.18.113", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", "commander": "^12.1.0", - "esbuild": "^0.23.1", + "esbuild": "^0.24.0", "eslint": "^8.57.1", "eslint-config-love": "^66.0.0", "eslint-plugin-lit": "^1.15.0", - "globals": "^15.9.0", - "lit": "^3.2.0", + "globals": "^15.10.0", + "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.78.0", + "sass": "^1.79.4", "sharp": "^0.33.5", "stylelint": "^16.9.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.6.0", + "typescript-eslint": "^8.8.1", "yaml": "^2.5.1" }, "engine": { From e1195c18d8d70355b4e91ed22b6c9a33cdbd9af3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:28:46 +0000 Subject: [PATCH 083/120] Bump @types/express from 4.17.21 to 5.0.0 Bumps [@types/express](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express) from 4.17.21 to 5.0.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/express) --- updated-dependencies: - dependency-name: "@types/express" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 30 +++++++++++++++--------------- package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index e2f6f50a..5f0606fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", - "@types/express": "^4.17.21", + "@types/express": "^5.0.0", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", "@types/node": "^16.18.113", @@ -3802,21 +3802,21 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "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.33", + "@types/express-serve-static-core": "^5.0.0", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "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": "*", @@ -15541,21 +15541,21 @@ "dev": true }, "@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "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.33", + "@types/express-serve-static-core": "^5.0.0", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "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": "*", diff --git a/package.json b/package.json index 4c1726e2..f05f313d 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", "@types/eslint__js": "^8.42.3", - "@types/express": "^4.17.21", + "@types/express": "^5.0.0", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", "@types/node": "^16.18.113", From 3f0f6e4d3b3f8e59856ef047dd058f760acef909 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 8 Oct 2024 16:35:36 +0200 Subject: [PATCH 084/120] Github CI: new job to test build and lint. --- .github/workflows/gh-build.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/gh-build.yml diff --git a/.github/workflows/gh-build.yml b/.github/workflows/gh-build.yml new file mode 100644 index 00000000..6623da85 --- /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: [opened, 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: '18.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 From 77ec284ade0d31b269ece540d4711e981a81db3a Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 8 Oct 2024 16:53:55 +0200 Subject: [PATCH 085/120] Fix build & CI --- .github/workflows/gh-build.yml | 2 +- server/lib/routers/index.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gh-build.yml b/.github/workflows/gh-build.yml index 6623da85..f72cfa5e 100644 --- a/.github/workflows/gh-build.yml +++ b/.github/workflows/gh-build.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: '18.x' + node-version: '20.x' - name: Install build dependencies run: sudo apt update && sudo apt install wget reuse -y 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)) From 6836138fc1257bae86160a2ae919206d5d153111 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:03:01 +0000 Subject: [PATCH 086/120] Bump eslint-config-love from 66.0.0 to 84.1.0 Bumps [eslint-config-love](https://github.com/mightyiam/eslint-config-love) from 66.0.0 to 84.1.0. - [Release notes](https://github.com/mightyiam/eslint-config-love/releases) - [Changelog](https://github.com/mightyiam/eslint-config-love/blob/main/CHANGELOG.md) - [Commits](https://github.com/mightyiam/eslint-config-love/compare/v66.0.0...v84.1.0) --- updated-dependencies: - dependency-name: eslint-config-love dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f0606fc..3d68e648 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "commander": "^12.1.0", "esbuild": "^0.24.0", "eslint": "^8.57.1", - "eslint-config-love": "^66.0.0", + "eslint-config-love": "^84.1.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.10.0", "lit": "^3.2.1", @@ -6581,9 +6581,9 @@ } }, "node_modules/eslint-config-love": { - "version": "66.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-66.0.0.tgz", - "integrity": "sha512-Op6YXKED9jFjdrg0wA/pUcnMla0IO0oN5S0OLRykboCa00ilLS82+dXoeIGMIBI0Q7Ik03X9fOes+jXZ4yL7pQ==", + "version": "84.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-84.1.0.tgz", + "integrity": "sha512-nrFAu5fnlAhEvluQ72nR0DG6YZ/7woREmr8QMi69f+ad55LosQ62UKDQw4o9Bwb8ye7deoPm1FTMUorzgL9ZHQ==", "dev": true, "funding": [ { @@ -17812,9 +17812,9 @@ } }, "eslint-config-love": { - "version": "66.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-66.0.0.tgz", - "integrity": "sha512-Op6YXKED9jFjdrg0wA/pUcnMla0IO0oN5S0OLRykboCa00ilLS82+dXoeIGMIBI0Q7Ik03X9fOes+jXZ4yL7pQ==", + "version": "84.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-84.1.0.tgz", + "integrity": "sha512-nrFAu5fnlAhEvluQ72nR0DG6YZ/7woREmr8QMi69f+ad55LosQ62UKDQw4o9Bwb8ye7deoPm1FTMUorzgL9ZHQ==", "dev": true, "requires": { "eslint-plugin-import": "^2.25.2", diff --git a/package.json b/package.json index f05f313d..aa200f4e 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "commander": "^12.1.0", "esbuild": "^0.24.0", "eslint": "^8.57.1", - "eslint-config-love": "^66.0.0", + "eslint-config-love": "^84.1.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.10.0", "lit": "^3.2.1", From bb992e29a6c746795aaf5330d9815d5be42e60cd Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 8 Oct 2024 17:23:10 +0200 Subject: [PATCH 087/120] Fix linting according to new rules, and disable buggy rules. --- client/common/admin/firewall/elements/admin-firewall.ts | 4 ++-- .../configuration/elements/channel-configuration.ts | 4 ++-- eslint.config.mjs | 8 ++++++++ server/lib/external-auth/oidc.ts | 1 + server/lib/federation/storage.ts | 1 + server/lib/routers/webchat.ts | 1 + 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/client/common/admin/firewall/elements/admin-firewall.ts b/client/common/admin/firewall/elements/admin-firewall.ts index 067193f9..7ef0db68 100644 --- a/client/common/admin/firewall/elements/admin-firewall.ts +++ b/client/common/admin/firewall/elements/admin-firewall.ts @@ -103,7 +103,7 @@ export class AdminFirewallElement extends LivechatElement { 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/configuration/elements/channel-configuration.ts b/client/common/configuration/elements/channel-configuration.ts index 01c5f812..c15038fd 100644 --- a/client/common/configuration/elements/channel-configuration.ts +++ b/client/common/configuration/elements/channel-configuration.ts @@ -115,7 +115,7 @@ export class ChannelConfigurationElement extends LivechatElement { 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/eslint.config.mjs b/eslint.config.mjs index 7793adaf..636b1aae 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -71,6 +71,14 @@ export default tseslint.config( '@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', { diff --git a/server/lib/external-auth/oidc.ts b/server/lib/external-auth/oidc.ts index 257e27d9..62b16d55 100644 --- a/server/lib/external-auth/oidc.ts +++ b/server/lib/external-auth/oidc.ts @@ -757,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') 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/routers/webchat.ts b/server/lib/routers/webchat.ts index c5c8bd60..f822449b 100644 --- a/server/lib/routers/webchat.ts +++ b/server/lib/routers/webchat.ts @@ -142,6 +142,7 @@ async function initWebchatRouter (options: RegisterServerOptionsV5): Promise Date: Tue, 8 Oct 2024 17:28:30 +0200 Subject: [PATCH 088/120] Better github CI configuration. --- .github/workflows/gh-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-build.yml b/.github/workflows/gh-build.yml index f72cfa5e..87f4eee0 100644 --- a/.github/workflows/gh-build.yml +++ b/.github/workflows/gh-build.yml @@ -9,7 +9,7 @@ on: branches: - main pull_request: - types: [opened, reopened] + types: [assigned, opened, synchronize, reopened] jobs: build: From fee56c383d7d58ffadef6fab1b6f84725a1199eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 04:08:08 +0000 Subject: [PATCH 089/120] Bump globals from 15.10.0 to 15.11.0 in the minor-and-patch group Bumps the minor-and-patch group with 1 update: [globals](https://github.com/sindresorhus/globals). Updates `globals` from 15.10.0 to 15.11.0 - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](https://github.com/sindresorhus/globals/compare/v15.10.0...v15.11.0) --- updated-dependencies: - dependency-name: globals dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d68e648..eb5b0d8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "eslint": "^8.57.1", "eslint-config-love": "^84.1.0", "eslint-plugin-lit": "^1.15.0", - "globals": "^15.10.0", + "globals": "^15.11.0", "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", @@ -7895,9 +7895,9 @@ } }, "node_modules/globals": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", - "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true, "engines": { "node": ">=18" @@ -18596,9 +18596,9 @@ } }, "globals": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", - "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true }, "globalthis": { diff --git a/package.json b/package.json index aa200f4e..343cc69b 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "eslint": "^8.57.1", "eslint-config-love": "^84.1.0", "eslint-plugin-lit": "^1.15.0", - "globals": "^15.10.0", + "globals": "^15.11.0", "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", From 79893c5ceae68ee49a0f3bc5404df423b855fcba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Oct 2024 03:31:07 +0000 Subject: [PATCH 090/120] Bump sass from 1.79.4 to 1.79.5 in the minor-and-patch group Bumps the minor-and-patch group with 1 update: [sass](https://github.com/sass/dart-sass). Updates `sass` from 1.79.4 to 1.79.5 - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.79.4...1.79.5) --- updated-dependencies: - dependency-name: sass dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-and-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 429 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 423 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb5b0d8a..1efb07d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,7 @@ "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.79.4", + "sass": "^1.79.5", "sharp": "^0.33.5", "stylelint": "^16.9.0", "stylelint-config-recommended-scss": "^14.1.0", @@ -2806,6 +2806,291 @@ "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, + "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, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/@peertube/feed": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/@peertube/feed/-/feed-5.1.3.tgz", @@ -9424,6 +9709,12 @@ "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 + }, "node_modules/node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -10665,11 +10956,12 @@ } }, "node_modules/sass": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz", - "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==", + "version": "1.79.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.5.tgz", + "integrity": "sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==", "dev": true, "dependencies": { + "@parcel/watcher": "^2.4.1", "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" @@ -14715,6 +15007,122 @@ "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, + "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 + } + } + }, + "@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.3", "resolved": "https://registry.npmjs.org/@peertube/feed/-/feed-5.1.3.tgz", @@ -19709,6 +20117,12 @@ "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 + }, "node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -20569,11 +20983,12 @@ "integrity": "sha512-pVlvK5ysevz8MzybRnDIa2YMxn0OJ7b9lDiWhMoaKPoJ7YkAg/7YtNjUgaYzElkwHxsw8dBMhaEn7UP6zxEwPg==" }, "sass": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz", - "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==", + "version": "1.79.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.5.tgz", + "integrity": "sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==", "dev": true, "requires": { + "@parcel/watcher": "^2.4.1", "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" diff --git a/package.json b/package.json index 343cc69b..64c99b3f 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.79.4", + "sass": "^1.79.5", "sharp": "^0.33.5", "stylelint": "^16.9.0", "stylelint-config-recommended-scss": "^14.1.0", From 903c291e2c0f2883d25b4ce32f1705f0e2a30f6a Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Sun, 13 Oct 2024 03:15:28 +0000 Subject: [PATCH 091/120] Translated using Weblate (Ukrainian) Currently translated at 3.1% (28 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/uk/ --- support/documentation/po/livechat.uk.po | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/support/documentation/po/livechat.uk.po b/support/documentation/po/livechat.uk.po index 6c6c4eb7..04cbc485 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.po @@ -7,27 +7,29 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\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: Ukrainian \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 From c6340a289cc4f4d6d539f3943c52da275bb089b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 03:40:11 +0000 Subject: [PATCH 092/120] Bump the minor-and-patch group with 2 updates Bumps the minor-and-patch group with 2 updates: [stylelint](https://github.com/stylelint/stylelint) and [yaml](https://github.com/eemeli/yaml). Updates `stylelint` from 16.9.0 to 16.10.0 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/16.9.0...16.10.0) Updates `yaml` from 2.5.1 to 2.6.0 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v2.5.1...v2.6.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: yaml dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 194 ++++++++++++++++++++++++---------------------- package.json | 4 +- 2 files changed, 102 insertions(+), 96 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1efb07d4..d3d01638 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,13 +50,13 @@ "npm-run-all": "^4.1.5", "sass": "^1.79.5", "sharp": "^0.33.5", - "stylelint": "^16.9.0", + "stylelint": "^16.10.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.8.1", - "yaml": "^2.5.1" + "yaml": "^2.6.0" }, "engines": { "npm": ">=7" @@ -6021,9 +6021,9 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "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 || >=16" @@ -10374,9 +10374,9 @@ } }, "node_modules/postcss": { - "version": "8.4.45", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -10394,8 +10394,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -10414,9 +10414,9 @@ "dev": true }, "node_modules/postcss-safe-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", - "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", + "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": [ { @@ -11887,9 +11887,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", - "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", + "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", "dev": true, "funding": [ { @@ -11910,17 +11910,17 @@ "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", - "debug": "^4.3.6", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.0", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.2", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.34.0", @@ -11929,14 +11929,13 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.41", + "postcss": "^8.4.47", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.0", + "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", "table": "^6.8.2", @@ -12071,24 +12070,25 @@ "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/stylelint/node_modules/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 }, + "node_modules/stylelint/node_modules/css-tree": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", + "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "dev": true, + "dependencies": { + "mdn-data": "2.10.0", + "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", @@ -12131,6 +12131,15 @@ "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", @@ -12140,6 +12149,12 @@ "node": ">=0.10.0" } }, + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", + "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", + "dev": true + }, "node_modules/stylelint/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -12155,21 +12170,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13117,9 +13117,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", "dev": true, "bin": { "yaml": "bin.mjs" @@ -17410,9 +17410,9 @@ } }, "css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "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": { @@ -20586,14 +20586,14 @@ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" }, "postcss": { - "version": "8.4.45", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "requires": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" } }, "postcss-media-query-parser": { @@ -20609,9 +20609,9 @@ "dev": true }, "postcss-safe-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", - "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", + "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": {} }, @@ -21654,9 +21654,9 @@ "dev": true }, "stylelint": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz", - "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==", + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", + "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", "dev": true, "requires": { "@csstools/css-parser-algorithms": "^3.0.1", @@ -21667,17 +21667,17 @@ "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", - "debug": "^4.3.6", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.0", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.2", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.34.0", @@ -21686,32 +21686,35 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.41", + "postcss": "^8.4.47", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.0", + "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", "table": "^6.8.2", "write-file-atomic": "^5.0.1" }, "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, "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 }, + "css-tree": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", + "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "dev": true, + "requires": { + "mdn-data": "2.10.0", + "source-map-js": "^1.0.1" + } + }, "debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -21740,12 +21743,24 @@ "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 }, + "mdn-data": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", + "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", + "dev": true + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -21757,15 +21772,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } } } }, @@ -22538,9 +22544,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 64c99b3f..2e812b16 100644 --- a/package.json +++ b/package.json @@ -67,13 +67,13 @@ "npm-run-all": "^4.1.5", "sass": "^1.79.5", "sharp": "^0.33.5", - "stylelint": "^16.9.0", + "stylelint": "^16.10.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.8.1", - "yaml": "^2.5.1" + "yaml": "^2.6.0" }, "engine": { "peertube": ">=5.2.0" From b354ac289582b9155c382913fb1f15c2047a4f81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 03:40:29 +0000 Subject: [PATCH 093/120] Bump eslint-config-love from 84.1.0 to 84.1.1 Bumps [eslint-config-love](https://github.com/mightyiam/eslint-config-love) from 84.1.0 to 84.1.1. - [Release notes](https://github.com/mightyiam/eslint-config-love/releases) - [Changelog](https://github.com/mightyiam/eslint-config-love/blob/main/CHANGELOG.md) - [Commits](https://github.com/mightyiam/eslint-config-love/compare/v84.1.0...v84.1.1) --- updated-dependencies: - dependency-name: eslint-config-love dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1efb07d4..9b7ce311 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "commander": "^12.1.0", "esbuild": "^0.24.0", "eslint": "^8.57.1", - "eslint-config-love": "^84.1.0", + "eslint-config-love": "^84.1.1", "eslint-plugin-lit": "^1.15.0", "globals": "^15.11.0", "lit": "^3.2.1", @@ -6866,9 +6866,9 @@ } }, "node_modules/eslint-config-love": { - "version": "84.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-84.1.0.tgz", - "integrity": "sha512-nrFAu5fnlAhEvluQ72nR0DG6YZ/7woREmr8QMi69f+ad55LosQ62UKDQw4o9Bwb8ye7deoPm1FTMUorzgL9ZHQ==", + "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": [ { @@ -6881,7 +6881,7 @@ "eslint-plugin-import": "^2.25.2", "eslint-plugin-n": "^17.0.0", "eslint-plugin-promise": "^7.0.0", - "typescript-eslint": "^8.0.0" + "typescript-eslint": "^8.3.0" }, "peerDependencies": { "eslint": "^8.0.1", @@ -18220,15 +18220,15 @@ } }, "eslint-config-love": { - "version": "84.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-84.1.0.tgz", - "integrity": "sha512-nrFAu5fnlAhEvluQ72nR0DG6YZ/7woREmr8QMi69f+ad55LosQ62UKDQw4o9Bwb8ye7deoPm1FTMUorzgL9ZHQ==", + "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.0.0" + "typescript-eslint": "^8.3.0" } }, "eslint-import-resolver-node": { diff --git a/package.json b/package.json index 64c99b3f..3e53635e 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "commander": "^12.1.0", "esbuild": "^0.24.0", "eslint": "^8.57.1", - "eslint-config-love": "^84.1.0", + "eslint-config-love": "^84.1.1", "eslint-plugin-lit": "^1.15.0", "globals": "^15.11.0", "lit": "^3.2.1", From 577eec6fa45936419305f2409993651c68ea2c34 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 28 Nov 2024 10:01:49 +0100 Subject: [PATCH 094/120] Add style compat with peertube v7 --- CHANGELOG.md | 1 + assets/styles/admin/firewall/_firewall.scss | 48 ++++++++++--------- .../styles/configuration/_configuration.scss | 22 ++++----- assets/styles/elements/_share-chat.scss | 2 +- assets/styles/elements/_spinner.scss | 4 +- assets/styles/elements/_tags-input.scss | 18 +++---- assets/styles/list-rooms/_list-rooms.scss | 2 +- assets/styles/mixins/_buttons.scss | 8 ++-- assets/styles/mixins/tables.scss | 4 +- client/admin-plugin-client-plugin.ts | 2 +- client/common/configuration/register.ts | 9 ++-- client/common/lib/elements/help-button.ts | 2 +- client/common/videowatch/button.ts | 2 +- client/utils/colors.ts | 47 +++++++++++++----- conversejs/custom/shared/styles/livechat.scss | 2 +- 15 files changed, 101 insertions(+), 72 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2befddf7..1281ccca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ If you use the "system Prosody", you should update to Prosody 0.12.4, and Lua 5. * #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 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 bd21e761..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], @@ -178,7 +178,7 @@ $small-view: 800px; display: flex; align-items: baseline; /* stylelint-disable-next-line value-keyword-case */ - color: var(--mainForegroundColor); + color: var(--fg, var(--mainForegroundColor)); &:hover, &:focus, 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/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/client/admin-plugin-client-plugin.ts b/client/admin-plugin-client-plugin.ts index 3d4f719f..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( 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/lib/elements/help-button.ts b/client/common/lib/elements/help-button.ts index 3ee42165..76ce1ac7 100644 --- a/client/common/lib/elements/help-button.ts +++ b/client/common/lib/elements/help-button.ts @@ -38,7 +38,7 @@ export class HelpButtonElement extends LivechatElement { href="${this.url.href}" target=_blank title="${this.buttonTitle}" - class="orange-button peertube-button-link" + class="primary-button orange-button peertube-button-link" >${unsafeHTML(helpButtonSVG())}` }) } diff --git a/client/common/videowatch/button.ts b/client/common/videowatch/button.ts index 22acf797..0da190c0 100644 --- a/client/common/videowatch/button.ts +++ b/client/common/videowatch/button.ts @@ -27,7 +27,7 @@ type displayButtonOptions = displayButtonOptionsCallback | displayButtonOptionsH function displayButton (dbo: displayButtonOptions): void { const button = document.createElement('a') button.classList.add( - 'orange-button', 'peertube-button-link', + 'primary-button', 'orange-button', 'peertube-button-link', 'peertube-plugin-livechat-button', 'peertube-plugin-livechat-button-' + dbo.name ) 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/conversejs/custom/shared/styles/livechat.scss b/conversejs/custom/shared/styles/livechat.scss index a269f538..f5b5fbc5 100644 --- a/conversejs/custom/shared/styles/livechat.scss +++ b/conversejs/custom/shared/styles/livechat.scss @@ -22,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); From 950643ac1dbce66142a658afcb9ad4baffcf1861 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 03:59:42 +0000 Subject: [PATCH 095/120] Bump the minor-and-patch group across 1 directory with 8 updates Bumps the minor-and-patch group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.12.0` | `9.16.0` | | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) | `2.9.0` | `2.11.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `16.18.113` | `16.18.121` | | [globals](https://github.com/sindresorhus/globals) | `15.11.0` | `15.13.0` | | [sass](https://github.com/sass/dart-sass) | `1.79.5` | `1.81.1` | | [stylelint](https://github.com/stylelint/stylelint) | `16.10.0` | `16.11.0` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.8.1` | `8.17.0` | | [yaml](https://github.com/eemeli/yaml) | `2.6.0` | `2.6.1` | Updates `@eslint/js` from 9.12.0 to 9.16.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.16.0/packages/js) Updates `@stylistic/eslint-plugin` from 2.9.0 to 2.11.0 - [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases) - [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v2.11.0/packages/eslint-plugin) Updates `@types/node` from 16.18.113 to 16.18.121 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `globals` from 15.11.0 to 15.13.0 - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](https://github.com/sindresorhus/globals/compare/v15.11.0...v15.13.0) Updates `sass` from 1.79.5 to 1.81.1 - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.79.5...1.81.1) Updates `stylelint` from 16.10.0 to 16.11.0 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/16.10.0...16.11.0) Updates `typescript-eslint` from 8.8.1 to 8.17.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.17.0/packages/typescript-eslint) Updates `yaml` from 2.6.0 to 2.6.1 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v2.6.0...v2.6.1) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: "@stylistic/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: globals dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: sass dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: typescript-eslint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: yaml dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-and-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 642 ++++++++++++++++++++++++++-------------------- package.json | 16 +- 2 files changed, 366 insertions(+), 292 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5c302f2a..6402cdd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,13 +21,13 @@ "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { - "@eslint/js": "^9.12.0", + "@eslint/js": "^9.16.0", "@lit-labs/motion": "^1.0.7", "@lit/context": "^1.1.3", "@lit/task": "^1.0.1", "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@stylistic/eslint-plugin": "^2.9.0", + "@stylistic/eslint-plugin": "^2.11.0", "@tsconfig/node16": "^16.1.3", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", @@ -35,7 +35,7 @@ "@types/express": "^5.0.0", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", - "@types/node": "^16.18.113", + "@types/node": "^16.18.121", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", @@ -44,19 +44,19 @@ "eslint": "^8.57.1", "eslint-config-love": "^84.1.1", "eslint-plugin-lit": "^1.15.0", - "globals": "^15.11.0", + "globals": "^15.13.0", "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.79.5", + "sass": "^1.81.1", "sharp": "^0.33.5", - "stylelint": "^16.10.0", + "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.8.1", - "yaml": "^2.6.0" + "typescript-eslint": "^8.17.0", + "yaml": "^2.6.1" }, "engines": { "npm": ">=7" @@ -1495,9 +1495,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "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": [ { @@ -1513,13 +1513,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.1" + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "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": [ { @@ -1536,9 +1536,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", - "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", + "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": [ { @@ -1554,30 +1554,8 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", - "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", - "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": "^6.1.0" + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@dabh/diagnostics": { @@ -2081,9 +2059,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", - "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", + "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" @@ -2811,6 +2789,7 @@ "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", @@ -3084,6 +3063,7 @@ "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" }, @@ -3904,14 +3884,14 @@ "dev": true }, "node_modules/@stylistic/eslint-plugin": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.9.0.tgz", - "integrity": "sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==", + "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.8.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "estraverse": "^5.3.0", "picomatch": "^4.0.2" }, @@ -3923,9 +3903,9 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "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" @@ -3935,14 +3915,14 @@ } }, "node_modules/@stylistic/eslint-plugin/node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "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.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4211,9 +4191,9 @@ } }, "node_modules/@types/node": { - "version": "16.18.113", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.113.tgz", - "integrity": "sha512-4jHxcEzSXpF1cBNxogs5FVbVSFSKo50sFCn7Xg7vmjJTbWFWgeuHW3QnoINlfmfG++MFR/q97RZE5RQXKeT+jg==" + "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", @@ -4290,16 +4270,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", - "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", + "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": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.8.1", - "@typescript-eslint/type-utils": "8.8.1", - "@typescript-eslint/utils": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.1", + "@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", @@ -4323,15 +4303,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", - "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", + "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": "8.8.1", - "@typescript-eslint/types": "8.8.1", - "@typescript-eslint/typescript-estree": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.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": { @@ -4374,13 +4354,13 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", - "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", + "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": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.1" + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4391,13 +4371,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", - "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", + "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.8.1", - "@typescript-eslint/utils": "8.8.1", + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/utils": "8.17.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4408,6 +4388,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -4438,9 +4421,9 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", - "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", + "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": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4451,13 +4434,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", - "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", + "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": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.1", + "@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", @@ -4538,15 +4521,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", - "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", + "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": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.8.1", - "@typescript-eslint/types": "8.8.1", - "@typescript-eslint/typescript-estree": "8.8.1" + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4557,16 +4540,21 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz", - "integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==", + "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.8.1", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.17.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4576,6 +4564,18 @@ "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", @@ -4972,9 +4972,9 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "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" @@ -8180,9 +8180,9 @@ } }, "node_modules/globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "version": "15.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", + "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", "dev": true, "engines": { "node": ">=18" @@ -8512,9 +8512,9 @@ } }, "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "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": { @@ -9713,7 +9713,8 @@ "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 + "dev": true, + "optional": true }, "node_modules/node-environment-flags": { "version": "1.0.6", @@ -10310,9 +10311,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "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", @@ -10374,9 +10375,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -10394,7 +10395,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -10956,14 +10957,13 @@ } }, "node_modules/sass": { - "version": "1.79.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.5.tgz", - "integrity": "sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==", + "version": "1.81.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.81.1.tgz", + "integrity": "sha512-VNLgf4FC5yFyKwAumAAwwNh8X4SevlVREq3Y8aDZIkm0lI/zO1feycMXQ4hn+eB6FVhRbleSQ1Yb/q8juSldTA==", "dev": true, "dependencies": { - "@parcel/watcher": "^2.4.1", "chokidar": "^4.0.0", - "immutable": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -10971,6 +10971,9 @@ }, "engines": { "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, "node_modules/sass/node_modules/chokidar": { @@ -11887,9 +11890,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", - "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", + "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": [ { @@ -11902,16 +11905,16 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1", - "@csstools/media-query-list-parser": "^3.0.1", - "@csstools/selector-specificity": "^4.0.0", + "@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": "^9.0.0", "css-functions-list": "^3.2.3", - "css-tree": "^3.0.0", + "css-tree": "^3.0.1", "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", @@ -11923,16 +11926,16 @@ "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", - "postcss": "^8.4.47", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^6.1.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -12070,6 +12073,28 @@ "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": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -12077,12 +12102,12 @@ "dev": true }, "node_modules/stylelint/node_modules/css-tree": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", - "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", + "integrity": "sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==", "dev": true, "dependencies": { - "mdn-data": "2.10.0", + "mdn-data": "2.12.1", "source-map-js": "^1.0.1" }, "engines": { @@ -12149,10 +12174,16 @@ "node": ">=0.10.0" } }, + "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.10.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", - "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", + "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": { @@ -12161,6 +12192,19 @@ "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", @@ -12560,14 +12604,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz", - "integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==", + "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.8.1", - "@typescript-eslint/parser": "8.8.1", - "@typescript-eslint/utils": "8.8.1" + "@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" @@ -12576,6 +12620,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -13117,9 +13164,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", - "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "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" @@ -14305,29 +14352,22 @@ "dev": true }, "@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "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.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "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": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", - "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", - "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "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": {} }, @@ -14585,9 +14625,9 @@ } }, "@eslint/js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", - "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", + "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": { @@ -15012,6 +15052,7 @@ "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", @@ -15035,7 +15076,8 @@ "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 + "dev": true, + "optional": true } } }, @@ -15794,33 +15836,33 @@ "dev": true }, "@stylistic/eslint-plugin": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.9.0.tgz", - "integrity": "sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==", + "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.8.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", + "@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.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "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.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "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.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" } }, "picomatch": { @@ -16073,9 +16115,9 @@ } }, "@types/node": { - "version": "16.18.113", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.113.tgz", - "integrity": "sha512-4jHxcEzSXpF1cBNxogs5FVbVSFSKo50sFCn7Xg7vmjJTbWFWgeuHW3QnoINlfmfG++MFR/q97RZE5RQXKeT+jg==" + "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", @@ -16151,16 +16193,16 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", - "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", + "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": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.8.1", - "@typescript-eslint/type-utils": "8.8.1", - "@typescript-eslint/utils": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.1", + "@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", @@ -16168,15 +16210,15 @@ } }, "@typescript-eslint/parser": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", - "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", + "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": "8.8.1", - "@typescript-eslint/types": "8.8.1", - "@typescript-eslint/typescript-estree": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.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": { @@ -16198,23 +16240,23 @@ } }, "@typescript-eslint/scope-manager": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", - "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", + "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": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.1" + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0" } }, "@typescript-eslint/type-utils": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", - "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", + "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/typescript-estree": "8.8.1", - "@typescript-eslint/utils": "8.8.1", + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/utils": "8.17.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -16237,19 +16279,19 @@ } }, "@typescript-eslint/types": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", - "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", + "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.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", - "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", + "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": "8.8.1", - "@typescript-eslint/visitor-keys": "8.8.1", + "@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", @@ -16300,25 +16342,33 @@ } }, "@typescript-eslint/utils": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", - "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", + "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.8.1", - "@typescript-eslint/types": "8.8.1", - "@typescript-eslint/typescript-estree": "8.8.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": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz", - "integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==", + "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.8.1", - "eslint-visitor-keys": "^3.4.3" + "@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": { @@ -16624,9 +16674,9 @@ } }, "acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true }, "acorn-jsx": { @@ -19004,9 +19054,9 @@ } }, "globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "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": { @@ -19231,9 +19281,9 @@ "dev": true }, "immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "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": { @@ -20121,7 +20171,8 @@ "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 + "dev": true, + "optional": true }, "node-environment-flags": { "version": "1.0.6", @@ -20546,9 +20597,9 @@ "dev": true }, "picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "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", @@ -20586,13 +20637,13 @@ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" }, "postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "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.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, @@ -20983,14 +21034,14 @@ "integrity": "sha512-pVlvK5ysevz8MzybRnDIa2YMxn0OJ7b9lDiWhMoaKPoJ7YkAg/7YtNjUgaYzElkwHxsw8dBMhaEn7UP6zxEwPg==" }, "sass": { - "version": "1.79.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.5.tgz", - "integrity": "sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==", + "version": "1.81.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.81.1.tgz", + "integrity": "sha512-VNLgf4FC5yFyKwAumAAwwNh8X4SevlVREq3Y8aDZIkm0lI/zO1feycMXQ4hn+eB6FVhRbleSQ1Yb/q8juSldTA==", "dev": true, "requires": { "@parcel/watcher": "^2.4.1", "chokidar": "^4.0.0", - "immutable": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "dependencies": { @@ -21654,21 +21705,21 @@ "dev": true }, "stylelint": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", - "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", + "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/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1", - "@csstools/media-query-list-parser": "^3.0.1", - "@csstools/selector-specificity": "^4.0.0", + "@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": "^9.0.0", "css-functions-list": "^3.2.3", - "css-tree": "^3.0.0", + "css-tree": "^3.0.1", "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", @@ -21680,16 +21731,16 @@ "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", - "postcss": "^8.4.47", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^6.1.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -21699,6 +21750,13 @@ "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", @@ -21706,12 +21764,12 @@ "dev": true }, "css-tree": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", - "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", + "integrity": "sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==", "dev": true, "requires": { - "mdn-data": "2.10.0", + "mdn-data": "2.12.1", "source-map-js": "^1.0.1" } }, @@ -21755,10 +21813,16 @@ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, + "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.10.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", - "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", + "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": { @@ -21767,6 +21831,16 @@ "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", @@ -22132,14 +22206,14 @@ "dev": true }, "typescript-eslint": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.1.tgz", - "integrity": "sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==", + "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.8.1", - "@typescript-eslint/parser": "8.8.1", - "@typescript-eslint/utils": "8.8.1" + "@typescript-eslint/eslint-plugin": "8.17.0", + "@typescript-eslint/parser": "8.17.0", + "@typescript-eslint/utils": "8.17.0" } }, "uid-safe": { @@ -22544,9 +22618,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", - "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 0f137879..317dc32d 100644 --- a/package.json +++ b/package.json @@ -38,13 +38,13 @@ "xmppjs-chat-bot": "^0.5.0" }, "devDependencies": { - "@eslint/js": "^9.12.0", + "@eslint/js": "^9.16.0", "@lit-labs/motion": "^1.0.7", "@lit/context": "^1.1.3", "@lit/task": "^1.0.1", "@peertube/feed": "^5.1.3", "@peertube/peertube-types": "^5.2.0", - "@stylistic/eslint-plugin": "^2.9.0", + "@stylistic/eslint-plugin": "^2.11.0", "@tsconfig/node16": "^16.1.3", "@types/async": "^3.2.24", "@types/escape-html": "^1.0.4", @@ -52,7 +52,7 @@ "@types/express": "^5.0.0", "@types/got": "^9.6.12", "@types/http-proxy": "^1.17.15", - "@types/node": "^16.18.113", + "@types/node": "^16.18.121", "@types/winston": "^2.4.4", "@types/xmpp__jid": "^1.3.5", "@typescript-eslint/parser": "^8.4.0", @@ -61,19 +61,19 @@ "eslint": "^8.57.1", "eslint-config-love": "^84.1.1", "eslint-plugin-lit": "^1.15.0", - "globals": "^15.11.0", + "globals": "^15.13.0", "lit": "^3.2.1", "lit-analyzer": "^2.0.3", "npm-run-all": "^4.1.5", - "sass": "^1.79.5", + "sass": "^1.81.1", "sharp": "^0.33.5", - "stylelint": "^16.10.0", + "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.8.1", - "yaml": "^2.6.0" + "typescript-eslint": "^8.17.0", + "yaml": "^2.6.1" }, "engine": { "peertube": ">=5.2.0" From c51245501c8b39b49150ea12b12c4fb540447238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Sat, 2 Nov 2024 10:57:58 +0000 Subject: [PATCH 096/120] Translated using Weblate (Czech) Currently translated at 4.3% (39 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/cs/ --- support/documentation/po/livechat.cs.po | 49 ++++++++++++++++++------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 16f8dd82..3af4544b 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -7,86 +7,109 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\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: Czech \n" +"PO-Revision-Date: 2024-11-03 11:16+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.1\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 From 76a25326e8941d3622de7826ae0a03211d1fab1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Wed, 6 Nov 2024 12:44:48 +0000 Subject: [PATCH 097/120] Translated using Weblate (Czech) Currently translated at 5.4% (49 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/cs/ --- support/documentation/po/livechat.cs.po | 27 +++++++++++++++---------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 3af4544b..f6abb7c2 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-11-03 11:16+0000\n" +"PO-Revision-Date: 2024-11-07 01:15+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech \n" @@ -16,7 +16,7 @@ msgstr "" "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 5.8.1\n" +"X-Generator: Weblate 5.8.2\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -119,42 +119,42 @@ msgstr "" #. 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 @@ -169,12 +169,17 @@ 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 From c511484511d6d56b2a971b4724327d0ce62e3ca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Tue, 12 Nov 2024 17:07:16 +0000 Subject: [PATCH 098/120] Translated using Weblate (Czech) Currently translated at 6.6% (60 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/cs/ --- support/documentation/po/livechat.cs.po | 61 ++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 6 deletions(-) diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index f6abb7c2..019e738d 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-11-07 01:15+0000\n" +"PO-Revision-Date: 2024-11-12 18:42+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech \n" @@ -16,7 +16,7 @@ msgstr "" "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 5.8.2\n" +"X-Generator: Weblate 5.8.3\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -114,7 +114,7 @@ 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 @@ -184,7 +184,7 @@ msgstr "" #. 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 @@ -210,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 @@ -241,23 +276,37 @@ 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 From 4c23e17dfe59e6e61fbb1d2dd74ad3e077ac4aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Tue, 12 Nov 2024 20:06:44 +0000 Subject: [PATCH 099/120] Translated using Weblate (Czech) Currently translated at 7.1% (64 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/cs/ --- support/documentation/po/livechat.cs.po | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 019e738d..0c22ad84 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-11-12 18:42+0000\n" +"PO-Revision-Date: 2024-11-12 20:31+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech \n" @@ -312,21 +312,33 @@ msgstr "Režim ladění" #: 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 From 11ae5f8e5ad2f0d5721c762dbbbc6f9214c1c783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Fri, 15 Nov 2024 00:26:06 +0000 Subject: [PATCH 100/120] Translated using Weblate (Czech) Currently translated at 7.5% (68 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/cs/ --- support/documentation/po/livechat.cs.po | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 0c22ad84..683c6846 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-11-12 20:31+0000\n" +"PO-Revision-Date: 2024-11-15 21:03+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech \n" @@ -344,23 +344,30 @@ msgstr "" #: 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 From 195c56b5ec748e12149621aca389615047eafa62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Tue, 26 Nov 2024 22:56:15 +0000 Subject: [PATCH 101/120] Translated using Weblate (Czech) Currently translated at 9.1% (82 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/cs/ --- support/documentation/po/livechat.cs.po | 48 +++++++++++++++++++++---- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 683c6846..cfce0d3b 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-11-15 21:03+0000\n" +"PO-Revision-Date: 2024-11-26 23:02+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech \n" @@ -16,7 +16,7 @@ msgstr "" "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 5.8.3\n" +"X-Generator: Weblate 5.8.4\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -373,11 +373,15 @@ msgstr "Prosody debugger" #: 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 @@ -391,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 From 575ea7cdd34c3591e4455c4a2d4e6db940c908ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Sat, 19 Oct 2024 22:58:31 +0000 Subject: [PATCH 102/120] Translated using Weblate (Czech) Currently translated at 10.7% (34 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index e69de29b..b6e5cede 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -0,0 +1,40 @@ +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 From 940d7b630d34b1e7ae89491be089b3930a7948d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Sun, 20 Oct 2024 21:15:33 +0000 Subject: [PATCH 103/120] Translated using Weblate (Czech) Currently translated at 31.3% (99 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 115 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index b6e5cede..f0af288c 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -38,3 +38,118 @@ tips_for_streamers: "Tipy pro streamery: Chcete-li například vložit chat do s 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" From 6ebcacdd41c3974563b058000b45cf1bc3bb48a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Fri, 25 Oct 2024 11:56:07 +0000 Subject: [PATCH 104/120] Translated using Weblate (Czech) Currently translated at 37.0% (117 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index f0af288c..c9c12953 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -153,3 +153,48 @@ federation_description: "

    Federace

    \nNásledující nastavení se týkaj 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, zá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 From ec8c66d490f2a32479c6fe86718c75daf9351a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Fri, 25 Oct 2024 12:22:18 +0000 Subject: [PATCH 105/120] Translated using Weblate (Czech) Currently translated at 37.6% (119 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index c9c12953..307ba09c 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -198,3 +198,15 @@ prosody_peertube_uri_description: "Pokud nevíte, co děláte, nechte prosím to 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" From 1459a7c51b776ae214e95be3f8db18d6b6085b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Fri, 25 Oct 2024 12:54:03 +0000 Subject: [PATCH 106/120] Translated using Weblate (Czech) Currently translated at 41.4% (131 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 307ba09c..6e303805 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -210,3 +210,34 @@ prosody_muc_expiration_description: "Zde můžete zvolit, jak dlouho bude obsah 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" From 7c90d40f4211338db6a37a287cfa1d855d1d909f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Fri, 25 Oct 2024 16:47:37 +0000 Subject: [PATCH 107/120] Translated using Weblate (Czech) Currently translated at 43.9% (139 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 6e303805..71e3a63a 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -241,3 +241,27 @@ prosody_room_allow_s2s_description: "Povolením této možnosti se bude mož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 From bf9c51d80e0293b495a5496d8108d5cfafc54b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Fri, 25 Oct 2024 18:10:41 +0000 Subject: [PATCH 108/120] Translated using Weblate (Czech) Currently translated at 44.3% (140 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 71e3a63a..63ec68d5 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -265,3 +265,12 @@ prosody_components_description: "Povolte použití externích komponent XMPP.
    \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" From d6b90b87c0c45dc69e341e152a466c4fbdc52e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Fri, 25 Oct 2024 22:30:42 +0000 Subject: [PATCH 109/120] Translated using Weblate (Czech) Currently translated at 47.4% (150 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 63ec68d5..ac7852e7 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -274,3 +274,18 @@ prosody_components_list_description: "Externí komponenty, které je třeba dekl 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í. From 46acb4a186d9d08ea028e1125a02c3bb48a79fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Sat, 26 Oct 2024 18:15:28 +0000 Subject: [PATCH 110/120] Translated using Weblate (Czech) Currently translated at 55.3% (175 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index ac7852e7..2802eb1f 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -289,3 +289,49 @@ experimental_warning: "Experi 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 From 437dcdb09c0c14d623f21b02a8bf3ba7afcd0584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Str=C4=99bski?= Date: Tue, 29 Oct 2024 12:16:24 +0000 Subject: [PATCH 111/120] Translated using Weblate (Polish) Currently translated at 31.9% (101 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/pl/ --- languages/pl.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/languages/pl.yml b/languages/pl.yml index 08187c62..338b328a 100644 --- a/languages/pl.yml +++ b/languages/pl.yml @@ -121,3 +121,9 @@ diagnostic: "Przed zwróceniem się o pomoc, skorzystaj z narzędzia diagnostycz 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. From e0d356eb35f37b89585d983fe5c21ec86106a738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Sat, 2 Nov 2024 19:59:07 +0000 Subject: [PATCH 112/120] Translated using Weblate (Czech) Currently translated at 56.9% (180 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 2802eb1f..83ff5729 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -335,3 +335,10 @@ livechat_configuration_channel_forbidden_words_comments_desc: "Můžete sem při 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 From d2027b7fe2cb59a67a1a4a7fe79aa1d99e8e4ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Sat, 2 Nov 2024 21:30:37 +0000 Subject: [PATCH 113/120] Translated using Weblate (Czech) Currently translated at 77.8% (246 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 83ff5729..13f83aeb 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -342,3 +342,91 @@ livechat_configuration_channel_command_cmd_desc: "Příkaz bez počátečního \ 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. From d113b4cabe5e09a1bbbc9ade86512f7832fb733d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Wed, 6 Nov 2024 12:24:50 +0000 Subject: [PATCH 114/120] Translated using Weblate (Czech) Currently translated at 93.6% (296 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 13f83aeb..1a402f9a 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -430,3 +430,86 @@ 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 From 35b802f5800e11f9217be71daa376c932e5c9b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Wed, 6 Nov 2024 12:31:10 +0000 Subject: [PATCH 115/120] Translated using Weblate (Czech) Currently translated at 95.5% (302 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/languages/cs.yml b/languages/cs.yml index 1a402f9a..022017e1 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -513,3 +513,18 @@ 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 From 1f7028703f42ea53ee43015acf32acb6cc062d36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Podhoreck=C3=BD?= Date: Wed, 6 Nov 2024 12:39:30 +0000 Subject: [PATCH 116/120] Translated using Weblate (Czech) Currently translated at 100.0% (316 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/cs/ --- languages/cs.yml | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/languages/cs.yml b/languages/cs.yml index 022017e1..1484cada 100644 --- a/languages/cs.yml +++ b/languages/cs.yml @@ -161,11 +161,11 @@ 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, zásuvný modul se pokusí automaticky + 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" + 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 @@ -439,8 +439,8 @@ livechat_configuration_channel_anonymize_moderation_desc: "Anonymizovat výchoz 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" + \ target=\"_blank\">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í @@ -528,3 +528,21 @@ livechat_configuration_channel_special_chars_desc: "Pokud tuto možnost povolít 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:' From 60531dc5028d46ffd8e8b71a6138c6cf92bcb757 Mon Sep 17 00:00:00 2001 From: Eder Etxebarria Date: Thu, 28 Nov 2024 17:57:14 +0000 Subject: [PATCH 117/120] Translated using Weblate (Basque) Currently translated at 9.1% (29 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/eu/ --- languages/eu.yml | 1 + 1 file changed, 1 insertion(+) 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 From 0d3cb9957eef3410287855f19fd31c0ecbeb49d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 16:10:38 +0000 Subject: [PATCH 118/120] Bump cookie, express and socket.io Bumps [cookie](https://github.com/jshttp/cookie), [express](https://github.com/expressjs/express) and [socket.io](https://github.com/socketio/socket.io). These dependencies needed to be updated together. Updates `cookie` from 0.4.2 to 0.7.1 - [Release notes](https://github.com/jshttp/cookie/releases) - [Commits](https://github.com/jshttp/cookie/compare/v0.4.2...v0.7.1) Updates `express` from 4.21.0 to 4.21.1 - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md) - [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.1) Updates `socket.io` from 4.7.5 to 4.8.1 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io@4.7.5...socket.io@4.8.1) --- updated-dependencies: - dependency-name: cookie dependency-type: indirect - dependency-name: express dependency-type: indirect - dependency-name: socket.io dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 130 +++++++++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6402cdd5..76889100 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5898,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" @@ -6447,9 +6447,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", @@ -6457,7 +6457,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", @@ -6468,21 +6468,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" @@ -6494,9 +6503,9 @@ } }, "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/enhanced-resolve": { @@ -7600,9 +7609,9 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "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", @@ -7610,7 +7619,7 @@ "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", @@ -7654,15 +7663,6 @@ "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==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -11556,16 +11556,16 @@ "dev": true }, "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" }, @@ -17368,9 +17368,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": { @@ -17770,9 +17770,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", @@ -17780,34 +17780,40 @@ "@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 }, "enhanced-resolve": { @@ -18628,9 +18634,9 @@ } }, "express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "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", @@ -18638,7 +18644,7 @@ "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", @@ -18666,12 +18672,6 @@ "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==", - "dev": true - }, "encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -21449,16 +21449,16 @@ } }, "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" }, From 9b01d8ed09723ac869cde764ca681a747df7cf70 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 3 Dec 2024 17:29:14 +0100 Subject: [PATCH 119/120] Update ConverseJS. --- conversejs/build-conversejs.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conversejs/build-conversejs.sh b/conversejs/build-conversejs.sh index acc1ed9c..9bdd36e3 100644 --- a/conversejs/build-conversejs.sh +++ b/conversejs/build-conversejs.sh @@ -20,6 +20,8 @@ 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-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" From a37438bdafa6a21d2490266c3a4b77aa81cbe3d5 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Tue, 3 Dec 2024 17:36:59 +0100 Subject: [PATCH 120/120] Bump v12.0.0 + npm audit fix --- CHANGELOG.md | 6 +----- package-lock.json | 43 +++++++++++++++++++++++-------------------- package.json | 2 +- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1281ccca..692437e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,6 @@ # Changelog -## 12.0.0 (Not Released Yet) - -TODO Before releasing: -* update ConverseJS with latest merges (there are currently some known bugs). -* as the Prosody version changes, check these stress test https://github.com/JohnXLivingston/livechat-perf-test/tree/main/tests/33-prosody-gc and apply the correct gc parameter. Also see https://github.com/JohnXLivingston/peertube-plugin-livechat/issues/300 +## 12.0.0 ### Importante Notes diff --git a/package-lock.json b/package-lock.json index 76889100..8ffed1a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "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", @@ -6005,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", @@ -7224,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", @@ -7550,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", @@ -17447,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", @@ -18134,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", @@ -18591,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", diff --git a/package.json b/package.json index 317dc32d..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",

    ;P7Mn)E7 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⪼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 F@n3MOlb8Si literal 0 HcmV?d00001 diff --git a/support/documentation/po/livechat.ar.po b/support/documentation/po/livechat.ar.po index 61904f50..388dd3e8 100644 --- a/support/documentation/po/livechat.ar.po +++ b/support/documentation/po/livechat.ar.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-11 10:35+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2024-08-30 20:08+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -2690,6 +2690,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 diff --git a/support/documentation/po/livechat.ca.po b/support/documentation/po/livechat.ca.po index caedce22..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.cs.po b/support/documentation/po/livechat.cs.po index 6d5a106b..16f8dd82 100644 --- a/support/documentation/po/livechat.cs.po +++ b/support/documentation/po/livechat.cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-11 10:35+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: Czech \n" @@ -2689,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 diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index 8ae55171..dfc77cbf 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-09-11 10:35+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2024-09-09 19:39+0000\n" "Last-Translator: Victor Hampel \n" "Language-Team: German \n" @@ -2764,6 +2764,70 @@ msgstr "Mischen mehrerer Chats in Ihrem Live-Stream" 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 "" + +#. 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 "Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine Nachricht." + +#. 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 diff --git a/support/documentation/po/livechat.el.po b/support/documentation/po/livechat.el.po index 114a5b19..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.en.pot b/support/documentation/po/livechat.en.pot index 5567a14b..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-09-11 10:35+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" @@ -3032,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 diff --git a/support/documentation/po/livechat.eo.po b/support/documentation/po/livechat.eo.po index 2b85485f..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.es.po b/support/documentation/po/livechat.es.po index 30c9438b..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-09-11 10:35+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" @@ -2730,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 diff --git a/support/documentation/po/livechat.eu.po b/support/documentation/po/livechat.eu.po index ae63ce42..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.fa.po b/support/documentation/po/livechat.fa.po index d7ec7f9d..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.fi.po b/support/documentation/po/livechat.fi.po index 703f932a..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.fr.po b/support/documentation/po/livechat.fr.po index 6f70f186..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-09-11 10:35+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" @@ -2822,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 diff --git a/support/documentation/po/livechat.gd.po b/support/documentation/po/livechat.gd.po index 96f3a270..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.gl.po b/support/documentation/po/livechat.gl.po index c9a5546e..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.hr.po b/support/documentation/po/livechat.hr.po index b1be0132..c7c56dbc 100644 --- a/support/documentation/po/livechat.hr.po +++ b/support/documentation/po/livechat.hr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-11 10:35+0200\n" +"POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2024-07-19 17:45+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" @@ -2721,6 +2721,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 diff --git a/support/documentation/po/livechat.hu.po b/support/documentation/po/livechat.hu.po index 9e6f619c..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.is.po b/support/documentation/po/livechat.is.po index 2e60fe7c..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.it.po b/support/documentation/po/livechat.it.po index a415d739..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.ja.po b/support/documentation/po/livechat.ja.po index 34ae33e5..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-09-11 10:35+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" @@ -2758,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 diff --git a/support/documentation/po/livechat.kab.po b/support/documentation/po/livechat.kab.po index 73a8f357..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.nb.po b/support/documentation/po/livechat.nb.po index 97dd5901..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.nl.po b/support/documentation/po/livechat.nl.po index f11df6bf..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.nn.po b/support/documentation/po/livechat.nn.po index ee23252c..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.oc.po b/support/documentation/po/livechat.oc.po index 8e823e20..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.pl.po b/support/documentation/po/livechat.pl.po index b360ab8e..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.pt.po b/support/documentation/po/livechat.pt.po index 9107e3e1..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.ru.po b/support/documentation/po/livechat.ru.po index f063c5f5..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.sq.po b/support/documentation/po/livechat.sq.po index a54083f4..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.sv.po b/support/documentation/po/livechat.sv.po index 9d85ecfb..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.th.po b/support/documentation/po/livechat.th.po index 8434cc0d..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.tok.po b/support/documentation/po/livechat.tok.po index 3cc3056a..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.tr.po b/support/documentation/po/livechat.tr.po index 27920254..9e15b447 100644 --- a/support/documentation/po/livechat.tr.po +++ b/support/documentation/po/livechat.tr.po @@ -2670,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 diff --git a/support/documentation/po/livechat.uk.po b/support/documentation/po/livechat.uk.po index 3ce3e36c..6c6c4eb7 100644 --- a/support/documentation/po/livechat.uk.po +++ b/support/documentation/po/livechat.uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" -"POT-Creation-Date: 2024-09-11 10:35+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: Ukrainian \n" @@ -2689,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 diff --git a/support/documentation/po/livechat.vi.po b/support/documentation/po/livechat.vi.po index 7be0ebd5..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.zh-Hans.po b/support/documentation/po/livechat.zh-Hans.po index 19a12069..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-09-11 10:35+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" @@ -2689,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 diff --git a/support/documentation/po/livechat.zh-Hant.po b/support/documentation/po/livechat.zh-Hant.po index b29ed992..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-09-11 10:35+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" @@ -2689,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 From 538ec28da9b8d731dd1ec631ce8e620ad845ad31 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Thu, 12 Sep 2024 17:36:48 +0200 Subject: [PATCH 056/120] Fix typo. --- server/lib/settings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/settings.ts b/server/lib/settings.ts index 1e463809..8c8bd19c 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 Date: Mon, 16 Sep 2024 03:47:41 +0000 Subject: [PATCH 057/120] Bump eslint-config-love from 64.0.0 to 66.0.0 Bumps [eslint-config-love](https://github.com/mightyiam/eslint-config-love) from 64.0.0 to 66.0.0. - [Release notes](https://github.com/mightyiam/eslint-config-love/releases) - [Changelog](https://github.com/mightyiam/eslint-config-love/blob/main/CHANGELOG.md) - [Commits](https://github.com/mightyiam/eslint-config-love/compare/v64.0.0...v66.0.0) --- updated-dependencies: - dependency-name: eslint-config-love dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9debac41..43dec93e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "commander": "^12.1.0", "esbuild": "^0.23.1", "eslint": "^8.57.0", - "eslint-config-love": "^64.0.0", + "eslint-config-love": "^66.0.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", "lit": "^3.2.0", @@ -6707,9 +6707,9 @@ } }, "node_modules/eslint-config-love": { - "version": "64.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-64.0.0.tgz", - "integrity": "sha512-b223cA724uh7AomGxc4orLsAsTQloJr/dNO6+ZVmDtl6bKHoUJGPZd2aG+EoOINUdkDucHWJ+p6q/qPwshO/0w==", + "version": "66.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-66.0.0.tgz", + "integrity": "sha512-Op6YXKED9jFjdrg0wA/pUcnMla0IO0oN5S0OLRykboCa00ilLS82+dXoeIGMIBI0Q7Ik03X9fOes+jXZ4yL7pQ==", "dev": true, "funding": [ { @@ -18051,9 +18051,9 @@ } }, "eslint-config-love": { - "version": "64.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-64.0.0.tgz", - "integrity": "sha512-b223cA724uh7AomGxc4orLsAsTQloJr/dNO6+ZVmDtl6bKHoUJGPZd2aG+EoOINUdkDucHWJ+p6q/qPwshO/0w==", + "version": "66.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-love/-/eslint-config-love-66.0.0.tgz", + "integrity": "sha512-Op6YXKED9jFjdrg0wA/pUcnMla0IO0oN5S0OLRykboCa00ilLS82+dXoeIGMIBI0Q7Ik03X9fOes+jXZ4yL7pQ==", "dev": true, "requires": { "eslint-plugin-import": "^2.25.2", diff --git a/package.json b/package.json index 1fad07a1..709ac07d 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "commander": "^12.1.0", "esbuild": "^0.23.1", "eslint": "^8.57.0", - "eslint-config-love": "^64.0.0", + "eslint-config-love": "^66.0.0", "eslint-plugin-lit": "^1.15.0", "globals": "^15.9.0", "lit": "^3.2.0", From 3ec4482043f5ac6c86bad88acbd9bc36b68b6bc8 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 16 Sep 2024 10:11:10 +0200 Subject: [PATCH 058/120] Fix dependabot config. --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f21f8a6a..74d9f371 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,7 +13,7 @@ updates: - dependency-name: typescript versions: - ">=5.6.0" # linting libs are not ready for 5.6 - - dependency-name: "@types/nodes" + - dependency-name: "@types/node" versions: - ">=17.0.0" # must be set to the Peertube required version. - dependency-name: "@peertube/peertube-types" From 1bdd7df7122f4fae05c4cbcd851945abe7576c0a Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Thu, 12 Sep 2024 10:29:25 +0000 Subject: [PATCH 059/120] Translated using Weblate (German) Currently translated at 100.0% (311 of 311 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/de/ --- languages/de.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/languages/de.yml b/languages/de.yml index 712b064e..1d90a502 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -619,10 +619,18 @@ livechat_configuration_applytomoderators_desc: "Standardmäßig sind Nachrichten 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 vor dem Löschen von Nachrichten akzeptiert werden. + 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" From 99371bcdecf54e691a429cfe1887a359212d552d Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Thu, 12 Sep 2024 16:53:06 +0000 Subject: [PATCH 060/120] Translated using Weblate (Albanian) Currently translated at 62.3% (197 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/sq/ --- languages/sq.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/languages/sq.yml b/languages/sq.yml index 9ae1a05a..ddc6e5e0 100644 --- a/languages/sq.yml +++ b/languages/sq.yml @@ -247,3 +247,5 @@ poll_vote_ok: Vota juaj është marrë parasysh, numëratorët do të përditës 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ë. From a68a2d0e30ae5b4e69c13a16b1fe345fe6e00f41 Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Fri, 13 Sep 2024 10:41:54 +0000 Subject: [PATCH 061/120] Translated using Weblate (Albanian) Currently translated at 62.6% (198 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/sq/ --- languages/sq.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/languages/sq.yml b/languages/sq.yml index ddc6e5e0..e9104cfc 100644 --- a/languages/sq.yml +++ b/languages/sq.yml @@ -249,3 +249,4 @@ 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 From b336dbbc782b4e51addd34153011251460c391b7 Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Sat, 14 Sep 2024 18:28:28 +0000 Subject: [PATCH 062/120] Translated using Weblate (German) Currently translated at 100.0% (316 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/de/ --- languages/de.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/languages/de.yml b/languages/de.yml index 1d90a502..047f2803 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -634,3 +634,8 @@ livechat_configuration_channel_no_duplicate_desc: "Wenn Sie diese Option aktivie 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 From 8fa17b050b0996c297fc1289e87562d52a63d0df Mon Sep 17 00:00:00 2001 From: "T.S" Date: Sun, 15 Sep 2024 14:56:37 +0000 Subject: [PATCH 063/120] Translated using Weblate (Japanese) Currently translated at 100.0% (316 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/ja/ --- languages/ja.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/languages/ja.yml b/languages/ja.yml index 20fb2719..c6964122 100644 --- a/languages/ja.yml +++ b/languages/ja.yml @@ -244,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: 概要 @@ -396,3 +396,8 @@ livechat_configuration_channel_no_duplicate_delay_desc: "ユーザーが同じ 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: 警告 From d7e98642f50b2c55a7e30203b7bc4b88c8eea00a Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Thu, 12 Sep 2024 10:42:44 +0000 Subject: [PATCH 064/120] Translated using Weblate (German) Currently translated at 100.0% (887 of 887 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/de/ --- support/documentation/po/livechat.de.po | 5818 ++++++++++++++++++----- 1 file changed, 4636 insertions(+), 1182 deletions(-) diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index dfc77cbf..353840fa 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -9,8 +9,10 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" "PO-Revision-Date: 2024-09-09 19:39+0000\n" -"Last-Translator: Victor Hampel \n" -"Language-Team: German \n" +"Last-Translator: Victor Hampel \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,13 +34,26 @@ msgstr "Kontaktieren Sie mich" #. 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 "Wenn Sie eine Frage haben oder über dieses Plugin sprechen möchten, können Sie diesem XMPP-Raum mit einem beliebigen Jabber-Client beitreten: [plugin-livechat-support@room.im.yiny.org](xmpp:plugin-livechat-support@room.im.yiny.org?join)." +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 "" +"Wenn Sie eine Frage haben oder über dieses Plugin sprechen möchten, können " +"Sie diesem XMPP-Raum mit einem beliebigen Jabber-Client beitreten: [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 "Wenn Sie das Projekt finanziell unterstützen möchten, können Sie mich per E-Mail unter git.[at].john-livingston.fr kontaktieren oder mein [Liberapay-Profil](https://liberapay.com/JohnLivingston/) ansehen." +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 "" +"Wenn Sie das Projekt finanziell unterstützen möchten, können Sie mich per E-" +"Mail unter git.[at].john-livingston.fr kontaktieren oder mein [Liberapay-" +"Profil](https://liberapay.com/JohnLivingston/) ansehen." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contributing/codeofconduct/_index.md @@ -54,8 +69,26 @@ msgstr "Verhaltenskodex" #. 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 "Dieser Verhaltenskodex basiert auf dem [Contributor Covenant](https://www.contributor-covenant.org), Version 2.1, verfügbar unter [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html). Übersetzungen sind unter [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations) verfügbar. Fälle von beleidigendem, belästigendem oder anderweitig inakzeptablem Verhalten können den für die Durchsetzung verantwortlichen Gemeinschaftsleitern per E-Mail an git.[at].john-livingston.fr gemeldet werden." +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 "" +"Dieser Verhaltenskodex basiert auf dem [Contributor Covenant](https://www." +"contributor-covenant.org), Version 2.1, verfügbar unter [https://www." +"contributor-covenant.org/version/2/1/code_of_conduct.html](https://www." +"contributor-covenant.org/version/2/1/code_of_conduct.html). Übersetzungen " +"sind unter [https://www.contributor-covenant.org/translations](https://www." +"contributor-covenant.org/translations) verfügbar. Fälle von beleidigendem, " +"belästigendem oder anderweitig inakzeptablem Verhalten können den für die " +"Durchsetzung verantwortlichen Gemeinschaftsleitern per E-Mail an git.[at]." +"john-livingston.fr gemeldet werden." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md @@ -65,8 +98,16 @@ msgstr "Entwickeln" #. 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 "Sprechen Sie immer über die Funktionen, die Sie entwickeln wollen, indem Sie das Issue, das Ihr Problem behandelt, erstellen/finden und kommentieren bevor Sie mit der Arbeit daran beginnen und informieren Sie die Gemeinschaft darüber, dass Sie mit der Programmierung beginnen, indem Sie das Thema für sich beanspruchen." +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 "" +"Sprechen Sie immer über die Funktionen, die Sie entwickeln wollen, indem Sie " +"das Issue, das Ihr Problem behandelt, erstellen/finden und kommentieren " +"bevor Sie mit der Arbeit daran beginnen und informieren Sie die Gemeinschaft " +"darüber, dass Sie mit der Programmierung beginnen, indem Sie das Thema für " +"sich beanspruchen." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -75,8 +116,12 @@ msgstr "Bitte benutzen Sie den `main` Zweig." #. 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 "Bis März 2023 wurden die Beiträge auf dem `develop` Zweig erstellt. Dieses Verfahren ist nun veraltet." +msgid "" +"Until march 2023, contribution were made on the `develop` branch. This " +"procedure is now deprecated." +msgstr "" +"Bis März 2023 wurden die Beiträge auf dem `develop` Zweig erstellt. Dieses " +"Verfahren ist nun veraltet." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md @@ -87,7 +132,8 @@ msgstr "Voraussetzung für die Erstellung dieses Plugins" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "It is highly recommended to be familiar with following concepts:" -msgstr "Es wird dringend empfohlen, mit den folgenden Konzepten vertraut zu sein:" +msgstr "" +"Es wird dringend empfohlen, mit den folgenden Konzepten vertraut zu sein:" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md @@ -151,13 +197,26 @@ 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 "Bitte beachten Sie, dass dieses Plugin ein AppImage für den Prosody XMPP Server benötigt. Dieses AppImage wird vom [Prosody AppImage](https://github.com/JohnXLivingston/prosody-appimage) Seitenprojekt bereitgestellt. Das Skript `build-prosody.sh` lädt Binärdateien herunter, die an dieses entfernte Repository angehängt sind, und überprüft, ob ihre sha256-Hashsumme korrekt ist." +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 "" +"Bitte beachten Sie, dass dieses Plugin ein AppImage für den Prosody XMPP " +"Server benötigt. Dieses AppImage wird vom [Prosody AppImage](https://github." +"com/JohnXLivingston/prosody-appimage) Seitenprojekt bereitgestellt. Das " +"Skript `build-prosody.sh` lädt Binärdateien herunter, die an dieses " +"entfernte Repository angehängt sind, und überprüft, ob ihre sha256-Hashsumme " +"korrekt ist." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md msgid "Clone the repository, buid the plugin, and create your feature branch:" -msgstr "Klonen Sie das Repository, bauen Sie das Plugin, und erstellen Sie Ihren Feature-Zweig:" +msgstr "" +"Klonen Sie das Repository, bauen Sie das Plugin, und erstellen Sie Ihren " +"Feature-Zweig:" #. type: Fenced code block (bash) #: support/documentation/content/en/contributing/develop/_index.md @@ -205,23 +264,45 @@ msgstr "" #. 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 "Sobald Sie bereit sind, Ihren Code zu zeigen und um Feedback zu bitten, reichen Sie einen *Entwurf* für einen Pull Request ein. Sobald Sie bereit für eine Codeüberprüfung vor der Zusammenführung sind, reichen Sie einen Pull Request ein. In jedem Fall sollten Sie Ihren PR mit dem Problem, die er behebt, verlinken, indem Sie die GitHub-Syntax verwenden: \"fixes #issue_number\"." +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 "" +"Sobald Sie bereit sind, Ihren Code zu zeigen und um Feedback zu bitten, " +"reichen Sie einen *Entwurf* für einen Pull Request ein. Sobald Sie bereit " +"für eine Codeüberprüfung vor der Zusammenführung sind, reichen Sie einen " +"Pull Request ein. In jedem Fall sollten Sie Ihren PR mit dem Problem, die er " +"behebt, verlinken, indem Sie die GitHub-Syntax verwenden: \"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 "Der Front-End-Code befindet sich im Ordner `client`, der Back-End-Code im Ordner `server`. Es gibt einige gemeinsam genutzte Codes im `shared` Ordner." +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 "" +"Der Front-End-Code befindet sich im Ordner `client`, der Back-End-Code im " +"Ordner `server`. Es gibt einige gemeinsam genutzte Codes im `shared` Ordner." #. 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 "Für allgemeine Anweisungen (Entwicklung von Plugins, Erstellung, Installation, ...), lesen Sie bitte die [Peertube Dokumentation](https://docs.joinpeertube.org/contribute-plugins?id=write-a-plugintheme)." +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 "" +"Für allgemeine Anweisungen (Entwicklung von Plugins, Erstellung, " +"Installation, ...), lesen Sie bitte die [Peertube Dokumentation](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 "Sie können das Plugin mit zusätzlichen Debug-Funktionen bauen, indem Sie es einfach benutzen:" +msgstr "" +"Sie können das Plugin mit zusätzlichen Debug-Funktionen bauen, indem Sie es " +"einfach benutzen:" #. type: Fenced code block (bash) #: support/documentation/content/en/contributing/develop/_index.md @@ -231,8 +312,23 @@ msgstr "NODE_ENV=dev npm run build\n" #. type: Plain text #: 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 "Dieses Plugin ist [REUSE](https://reuse.software/) konform: Es verwendet SPDX-Header, um die Lizenzinformationen seines Quellcodes zu identifizieren. Weitere Informationen finden Sie auf der [REUSE](https://reuse.software/) Website. Sie können das [reuse](https://reuse.readthedocs.io/en/stable/readme.html#) Kommandozeilenwerkzeug verwenden, um die Header zu aktualisieren. Der Befehl `npm run lint` verwendet den Befehl `reuse`, um die Einhaltung zu überprüfen. Vergessen Sie nicht, Ihre Copyright-Informationen in die SPDX-Header einzufügen, wenn Sie Code ändern." +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 "" +"Dieses Plugin ist [REUSE](https://reuse.software/) konform: Es verwendet " +"SPDX-Header, um die Lizenzinformationen seines Quellcodes zu " +"identifizieren. Weitere Informationen finden Sie auf der [REUSE](https://" +"reuse.software/) Website. Sie können das [reuse](https://reuse.readthedocs." +"io/en/stable/readme.html#) Kommandozeilenwerkzeug verwenden, um die Header " +"zu aktualisieren. Der Befehl `npm run lint` verwendet den Befehl `reuse`, " +"um die Einhaltung zu überprüfen. Vergessen Sie nicht, Ihre Copyright-" +"Informationen in die SPDX-Header einzufügen, wenn Sie Code ändern." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md @@ -242,8 +338,23 @@ 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 "Dieses Plugin verwendet ESBuild für die Generierung von Frontend-Code, wie das offizielle `peertube-plugin-quickstart` Plugin. ESBuild kann mit Typescript umgehen, prüft aber keine Typen (siehe [ESBuild-Dokumentation](https://esbuild.github.io/content-types/#typescript)). Deshalb kompilieren wir Typescript zuerst mit der Option `-noEmit`, nur um die Typen zu überprüfen (`check:client:ts` in der package.json Datei). Dann, wenn alles in Ordnung ist, führen wir ESBuild aus, um das kompilierte Javascript zu erzeugen." +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 "" +"Dieses Plugin verwendet ESBuild für die Generierung von Frontend-Code, wie " +"das offizielle `peertube-plugin-quickstart` Plugin. ESBuild kann mit " +"Typescript umgehen, prüft aber keine Typen (siehe [ESBuild-Dokumentation]" +"(https://esbuild.github.io/content-types/#typescript)). Deshalb kompilieren " +"wir Typescript zuerst mit der Option `-noEmit`, nur um die Typen zu " +"überprüfen (`check:client:ts` in der package.json Datei). Dann, wenn alles " +"in Ordnung ist, führen wir ESBuild aus, um das kompilierte Javascript zu " +"erzeugen." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md @@ -253,28 +364,59 @@ msgstr "Debug Modus" #. 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 "Es gibt einen Debug Modus für dieses Plugin, der einige Verzögerungen verkürzt. Zum Beispiel werden einige Protokolldateien alle zwei Minuten erneuert, anstatt einmal pro Tag. Dies ermöglicht es, bestimmte Aktionen, für die man normalerweise Stunden oder Tage warten müsste, leichter zu testen." +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 "" +"Es gibt einen Debug Modus für dieses Plugin, der einige Verzögerungen " +"verkürzt. Zum Beispiel werden einige Protokolldateien alle zwei Minuten " +"erneuert, anstatt einmal pro Tag. Dies ermöglicht es, bestimmte Aktionen, " +"für die man normalerweise Stunden oder Tage warten müsste, leichter zu " +"testen." #. 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 "Um diesen Modus zu aktivieren, müssen Sie lediglich die Datei `/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/debug_mode` erstellen (ersetzen Sie `/var/www/peertube/storage/` durch den richtigen Pfad Ihrer Installation)." +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 "" +"Um diesen Modus zu aktivieren, müssen Sie lediglich die Datei `/var/www/" +"peertube/storage/plugins/data/peertube-plugin-livechat/debug_mode` erstellen " +"(ersetzen Sie `/var/www/peertube/storage/` durch den richtigen Pfad Ihrer " +"Installation)." #. 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 "Das einfache Vorhandensein dieser Datei reicht aus, um den Debug Modus zu aktivieren. Um sicherzustellen, dass sie berücksichtigt wird, können Sie Ihre Peertube Instanz neu starten." +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 "" +"Das einfache Vorhandensein dieser Datei reicht aus, um den Debug Modus zu " +"aktivieren. Um sicherzustellen, dass sie berücksichtigt wird, können Sie " +"Ihre Peertube Instanz neu starten." #. 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 "Diese Datei kann einige JSON enthalten, um erweiterte Optionen zu ermöglichen. Eine Liste der vorhandenen Parameter finden Sie in `server/lib/debug.ts`. Starten Sie Peertube nach jeder Änderung des Inhalts neu." +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 "" +"Diese Datei kann einige JSON enthalten, um erweiterte Optionen zu " +"ermöglichen. Eine Liste der vorhandenen Parameter finden Sie in `server/lib/" +"debug.ts`. Starten Sie Peertube nach jeder Änderung des Inhalts neu." #. 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 "Aktivieren Sie diesen Modus nicht auf einem Produktionsserver und auch nicht auf einem öffentlichen Server. Dies könnte Sicherheitsprobleme verursachen." +msgid "" +"Don't enable this mode on a production server, neither on a public server. " +"This could cause security issues." +msgstr "" +"Aktivieren Sie diesen Modus nicht auf einem Produktionsserver und auch nicht " +"auf einem öffentlichen Server. Dies könnte Sicherheitsprobleme verursachen." #. type: Title ### #: support/documentation/content/en/contributing/develop/_index.md @@ -284,8 +426,18 @@ msgstr "Prosody neustarten" #. 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 "Wenn der Debug Modus aktiviert ist, können Sie Prosody mit diesem API-Aufruf neu starten: `http://your_instance.tld/plugins/livechat/router/api/restart_prosody`. Für diesen Aufruf ist keine Authentifizierung erforderlich. Er kann von einer Befehlszeile aus erfolgen, zum Beispiel mit `curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody`." +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 "" +"Wenn der Debug Modus aktiviert ist, können Sie Prosody mit diesem API-Aufruf " +"neu starten: `http://your_instance.tld/plugins/livechat/router/api/" +"restart_prosody`. Für diesen Aufruf ist keine Authentifizierung " +"erforderlich. Er kann von einer Befehlszeile aus erfolgen, zum Beispiel mit " +"`curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody`." #. type: Title ### #: support/documentation/content/en/contributing/develop/_index.md @@ -295,13 +447,23 @@ 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 "Es ist möglich, das Prosody AppImage mit Hilfe von [MobDebug](https://luarocks.org/modules/paulclinger/mobdebug) mit einem externen Debugger zu verbinden." +msgid "" +"It is possible to connect the Prosody AppImage to a remote debugger using " +"[MobDebug](https://luarocks.org/modules/paulclinger/mobdebug)." +msgstr "" +"Es ist möglich, das Prosody AppImage mit Hilfe von [MobDebug](https://" +"luarocks.org/modules/paulclinger/mobdebug) mit einem externen Debugger zu " +"verbinden." #. 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 "Dazu müssen Sie MobDebug in einem Ordner einrichten, auf den der Benutzer `peertube` zugreifen kann. Dann fügen Sie dies in der Datei `debub_mode` hinzu:" +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 "" +"Dazu müssen Sie MobDebug in einem Ordner einrichten, auf den der Benutzer " +"`peertube` zugreifen kann. Dann fügen Sie dies in der Datei `debub_mode` " +"hinzu:" #. type: Fenced code block (json) #: support/documentation/content/en/contributing/develop/_index.md @@ -325,8 +487,12 @@ msgstr "" #. 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` und `port` sind optional. `debugger_path` muss auf den Ordner zeigen, in dem sich die `MobDebug` `.lua` Datei befindet." +msgid "" +"`host` and `port` are optional. `debugger_path` must point to the folder " +"where the `MobDebug` `.lua` file is." +msgstr "" +"`host` und `port` sind optional. `debugger_path` muss auf den Ordner zeigen, " +"in dem sich die `MobDebug` `.lua` Datei befindet." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -340,8 +506,21 @@ msgstr "Starten Sie Ihren Debugger-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 "Damit Prosody eine Verbindung mit dem Debugger herstellen kann, rufen Sie die API `http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true` auf. Dieser Aufruf erfordert keine Authentifizierung. Er kann von einer Kommandozeile aus erfolgen, zum Beispiel mit `curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true`. Sie können sogar Ihren Debug Server so konfigurieren, dass er diese Anfrage automatisch startet." +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 "" +"Damit Prosody eine Verbindung mit dem Debugger herstellen kann, rufen Sie " +"die API `http://your_instance.tld/plugins/livechat/router/api/" +"restart_prosody?debugger=true` auf. Dieser Aufruf erfordert keine " +"Authentifizierung. Er kann von einer Kommandozeile aus erfolgen, zum " +"Beispiel mit `curl http://your_instance.tld/plugins/livechat/router/api/" +"restart_prosody?debugger=true`. Sie können sogar Ihren Debug Server so " +"konfigurieren, dass er diese Anfrage automatisch startet." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md @@ -356,18 +535,40 @@ msgstr "Schnelle Entwicklungsumgebung mit Docker" #. 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 "Es gibt eine Anleitung in französischer Sprache auf dem [le 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) das erklärt, wie man schnell eine Entwicklungsumgebung mit Docker erstellt." +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 "" +"Es gibt eine Anleitung in französischer Sprache auf dem [le 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) das erklärt, wie man schnell eine Entwicklungsumgebung mit " +"Docker erstellt." #. 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 "Es wurde ein Repo daraus gemacht, siehe [pt-plugin-dev](https://codeberg.org/mose/pt-plugin-dev)." +msgid "" +"A repo was made out of it, check out [pt-plugin-dev](https://codeberg.org/" +"mose/pt-plugin-dev)." +msgstr "" +"Es wurde ein Repo daraus gemacht, siehe [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 "Hinweis: Aus einem unbekannten Grund kann Prosody die DNS-Adresse von Containern nicht auflösen, wenn die lua-unbound-Bibliothek verwendet wird. Es gibt einen unsaubere Lösung dafür im Plugin: Erstellen Sie einfach eine `/data/plugins/data/peertube-plugin-livechat/no_lua_unbound` Datei in deinen docker-volumes, dann starten Sie die Container neu." +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 "" +"Hinweis: Aus einem unbekannten Grund kann Prosody die DNS-Adresse von " +"Containern nicht auflösen, wenn die lua-unbound-Bibliothek verwendet wird. " +"Es gibt einen unsaubere Lösung dafür im Plugin: Erstellen Sie einfach eine `/" +"data/plugins/data/peertube-plugin-livechat/no_lua_unbound` Datei in deinen " +"docker-volumes, dann starten Sie die Container neu." #. type: Title ## #: support/documentation/content/en/contributing/develop/_index.md @@ -377,28 +578,53 @@ msgstr "Schnelles Neuerstellen und Installieren des Plugins" #. 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 "Wenn Sie Änderungen vornehmen, müssen Sie nicht immer das gesamte Projekt neu erstellen und das Plugin in Ihrer Entwicklungsumgebung neu installieren. Sie können nur den geänderten Teil bauen (zum Beispiel, wenn Sie nur die Client-Dateien geändert haben: `npm run build:client`). Prüfen Sie die `package.json` Dateien auf verfügbare Build-Skripte." +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 "" +"Wenn Sie Änderungen vornehmen, müssen Sie nicht immer das gesamte Projekt " +"neu erstellen und das Plugin in Ihrer Entwicklungsumgebung neu " +"installieren. Sie können nur den geänderten Teil bauen (zum Beispiel, wenn " +"Sie nur die Client-Dateien geändert haben: `npm run build:client`). Prüfen " +"Sie die `package.json` Dateien auf verfügbare Build-Skripte." #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md -msgid "When the plugin is already installed on your dev instance, and you haven't changed any dependency, you can quickly install your work by following these steps:" -msgstr "Wenn das Plugin bereits auf Ihrer Entwicklungsinstanz installiert ist und Sie keine Abhängigkeiten geändert haben, können Sie Ihre Arbeit schnell installieren, indem Sie diese Schritte ausführen:" +msgid "" +"When the plugin is already installed on your dev instance, and you haven't " +"changed any dependency, you can quickly install your work by following these " +"steps:" +msgstr "" +"Wenn das Plugin bereits auf Ihrer Entwicklungsinstanz installiert ist und " +"Sie keine Abhängigkeiten geändert haben, können Sie Ihre Arbeit schnell " +"installieren, indem Sie diese Schritte ausführen:" #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md msgid "re-build necessary parts of the plugin (client, styles, ...)," -msgstr "die notwendigen Teile des Plugins (Client, Stile, ...) neu zu erstellen," +msgstr "" +"die notwendigen Teile des Plugins (Client, Stile, ...) neu zu erstellen," #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md -msgid "overwrite the `data/plugins/node_modules/peertube-plugin-livechat/dist/` content of your dev instance by the content of the plugin's `dist` folder," -msgstr "den Inhalt von `data/plugins/node_modules/peertube-plugin-livechat/dist/` Ihrer Dev-Instanz mit dem Inhalt des `dist`-Ordners des Plugins überschreiben," +msgid "" +"overwrite the `data/plugins/node_modules/peertube-plugin-livechat/dist/` " +"content of your dev instance by the content of the plugin's `dist` folder," +msgstr "" +"den Inhalt von `data/plugins/node_modules/peertube-plugin-livechat/dist/` " +"Ihrer Dev-Instanz mit dem Inhalt des `dist`-Ordners des Plugins " +"überschreiben," #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md -msgid "change recursively `plugins/node_modules/peertube-plugin-livechat/dist/` files owner to your `peertube` user," -msgstr "rekursiv die Besitzerrechte der `plugins/node_modules/peertube-plugin-livechat/dist/` Dateien auf Ihren `peertube` Benutzer ändern," +msgid "" +"change recursively `plugins/node_modules/peertube-plugin-livechat/dist/` " +"files owner to your `peertube` user," +msgstr "" +"rekursiv die Besitzerrechte der `plugins/node_modules/peertube-plugin-" +"livechat/dist/` Dateien auf Ihren `peertube` Benutzer ändern," #. type: Bullet: '* ' #: support/documentation/content/en/contributing/develop/_index.md @@ -413,8 +639,15 @@ msgstr "Leistungstests" #. type: Plain text #: support/documentation/content/en/contributing/develop/_index.md -msgid "The [livechat-perf-test](https://github.com/JohnXLivingston/livechat-perf-test) repository contains some tools to make performance tests. It can be used to evaluate code improvements, or find bottlenecks." -msgstr "Das [livechat-perf-test](https://github.com/JohnXLivingston/livechat-perf-test) Repository enthält einige Werkzeuge zur Durchführung von Leistungstests. Sie können verwendet werden, um Code-Verbesserungen zu bewerten oder Engpässe zu finden." +msgid "" +"The [livechat-perf-test](https://github.com/JohnXLivingston/livechat-perf-" +"test) repository contains some tools to make performance tests. It can be " +"used to evaluate code improvements, or find bottlenecks." +msgstr "" +"Das [livechat-perf-test](https://github.com/JohnXLivingston/livechat-perf-" +"test) Repository enthält einige Werkzeuge zur Durchführung von " +"Leistungstests. Sie können verwendet werden, um Code-Verbesserungen zu " +"bewerten oder Engpässe zu finden." #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contributing/document/_index.md @@ -437,8 +670,15 @@ msgstr "Allgemeine Informationen" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Always inform the community before working (by creating a new issue, or commenting an existing one). This is to avoid that two persons are working on the same thing, and prevent conflicts." -msgstr "Informieren Sie die Community immer vor der Arbeit (indem Sie ein neues Problem erstellen oder ein bestehendes kommentieren). Damit soll vermieden werden, dass zwei Personen an der gleichen Sache arbeiten, und Konflikte zu verhindern." +msgid "" +"Always inform the community before working (by creating a new issue, or " +"commenting an existing one). This is to avoid that two persons are working " +"on the same thing, and prevent conflicts." +msgstr "" +"Informieren Sie die Community immer vor der Arbeit (indem Sie ein neues " +"Problem erstellen oder ein bestehendes kommentieren). Damit soll vermieden " +"werden, dass zwei Personen an der gleichen Sache arbeiten, und Konflikte zu " +"verhindern." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md @@ -447,28 +687,55 @@ msgstr "Bitte benutzen Sie den `main`-Zweig." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "The documentation source code is in the `support/documentation/content` folder." -msgstr "Der Quellcode der Dokumentation befindet sich im Ordner `support/documentation/content`." +msgid "" +"The documentation source code is in the `support/documentation/content` " +"folder." +msgstr "" +"Der Quellcode der Dokumentation befindet sich im Ordner `support/" +"documentation/content`." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "The documentation is generated using [Hugo](https://gohugo.io/). You have to install it on your computer if you want to preview your work." -msgstr "Die Dokumentation wird mit [Hugo](https://gohugo.io/) erstellt. Sie müssen es auf Ihrem Computer installieren, wenn Sie eine Vorschau Ihrer Arbeit sehen wollen." +msgid "" +"The documentation is generated using [Hugo](https://gohugo.io/). You have " +"to install it on your computer if you want to preview your work." +msgstr "" +"Die Dokumentation wird mit [Hugo](https://gohugo.io/) erstellt. Sie müssen " +"es auf Ihrem Computer installieren, wenn Sie eine Vorschau Ihrer Arbeit " +"sehen wollen." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "The minimum required version for Hugo is 0.121.0. It was tested using version 0.132.2." -msgstr "Die erforderliche Mindestversion für Hugo ist 0.121.0. Es wurde mit Version 0.132.2 getestet." +msgid "" +"The minimum required version for Hugo is 0.121.0. It was tested using " +"version 0.132.2." +msgstr "" +"Die erforderliche Mindestversion für Hugo ist 0.121.0. Es wurde mit Version " +"0.132.2 getestet." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "The used theme is [hugo-theme-relearn](https://mcshelby.github.io/hugo-theme-relearn). You should read its documentation before starting editing the documentation." -msgstr "Das verwendete Thema ist [hugo-theme-learn](https://mcshelby.github.io/hugo-theme-relearn). Sie sollten dessen Dokumentation lesen, bevor Sie mit der Bearbeitung der Dokumentation beginnen." +msgid "" +"The used theme is [hugo-theme-relearn](https://mcshelby.github.io/hugo-theme-" +"relearn). You should read its documentation before starting editing the " +"documentation." +msgstr "" +"Das verwendete Thema ist [hugo-theme-learn](https://mcshelby.github.io/hugo-" +"theme-relearn). Sie sollten dessen Dokumentation lesen, bevor Sie mit der " +"Bearbeitung der Dokumentation beginnen." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "When a new plugin version is released, or when documentation is updated, plugin maintainers will merge the `main` branch to the `documentation` branch. This will trigger github and gitlab pipelines, and update published documentation." -msgstr "Wenn eine neue Pluginversion veröffentlicht oder die Dokumentation aktualisiert wird, führen die Plugin Verwalter den `main`-Zweig mit dem `documentation`-Zweig zusammen. Dadurch werden Github- und Gitlab-Pipelines ausgelöst und die veröffentlichte Dokumentation aktualisiert." +msgid "" +"When a new plugin version is released, or when documentation is updated, " +"plugin maintainers will merge the `main` branch to the `documentation` " +"branch. This will trigger github and gitlab pipelines, and update published " +"documentation." +msgstr "" +"Wenn eine neue Pluginversion veröffentlicht oder die Dokumentation " +"aktualisiert wird, führen die Plugin Verwalter den `main`-Zweig mit dem " +"`documentation`-Zweig zusammen. Dadurch werden Github- und Gitlab-Pipelines " +"ausgelöst und die veröffentlichte Dokumentation aktualisiert." #. type: Title ## #: support/documentation/content/en/contributing/document/_index.md @@ -483,13 +750,25 @@ msgstr "Die Hauptsprache ist Englisch (Code `en`)." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "The `support/documentation/content/en` folder contains only english documentation files." -msgstr "Der Ordner `support/documentation/content/en` enthält nur englische Dokumentationsdateien." +msgid "" +"The `support/documentation/content/en` folder contains only english " +"documentation files." +msgstr "" +"Der Ordner `support/documentation/content/en` enthält nur englische " +"Dokumentationsdateien." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Documentation is translated using Weblate (see the [translation documentation](/peertube-plugin-livechat/contributing/translate/)). To do so, we use the [po4a tool](https://po4a.org/), as we will se later in this page." -msgstr "Die Dokumentation wird mit Weblate übersetzt (siehe die [Übersetzungsdokumentation](/peertube-plugin-livechat/de/contributing/translate/)). Um dies zu tun, verwenden wir das [po4a tool](https://po4a.org/), wie wir später auf dieser Seite sehen werden." +msgid "" +"Documentation is translated using Weblate (see the [translation " +"documentation](/peertube-plugin-livechat/contributing/translate/)). To do " +"so, we use the [po4a tool](https://po4a.org/), as we will se later in this " +"page." +msgstr "" +"Die Dokumentation wird mit Weblate übersetzt (siehe die " +"[Übersetzungsdokumentation](/peertube-plugin-livechat/de/contributing/" +"translate/)). Um dies zu tun, verwenden wir das [po4a tool](https://po4a." +"org/), wie wir später auf dieser Seite sehen werden." #. type: Title ## #: support/documentation/content/en/contributing/document/_index.md @@ -499,13 +778,21 @@ msgstr "Eine neue Sprache hinzufügen" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "In the `support/documentation/config.toml` file, please copy and modify the `[Languages.fr]` section." -msgstr "Kopieren und ändern Sie den Abschnitt `[Languages.fr]` in der Datei `support/documentation/config.toml`." +msgid "" +"In the `support/documentation/config.toml` file, please copy and modify the " +"`[Languages.fr]` section." +msgstr "" +"Kopieren und ändern Sie den Abschnitt `[Languages.fr]` in der Datei `support/" +"documentation/config.toml`." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "If the translations are not complete, it does not matter, english will be used for missing strings." -msgstr "Wenn die Übersetzungen nicht vollständig sind, macht das nichts, die fehlenden Zeichenfolgen werden auf Englisch angezeigt." +msgid "" +"If the translations are not complete, it does not matter, english will be " +"used for missing strings." +msgstr "" +"Wenn die Übersetzungen nicht vollständig sind, macht das nichts, die " +"fehlenden Zeichenfolgen werden auf Englisch angezeigt." #. type: Title ## #: support/documentation/content/en/contributing/document/_index.md @@ -516,7 +803,9 @@ msgstr "Vorschau" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md msgid "To preview your modifications, just run:" -msgstr "Um eine Vorschau Ihrer Änderungen zu sehen, führen Sie einfach diesen Befehl aus:" +msgstr "" +"Um eine Vorschau Ihrer Änderungen zu sehen, führen Sie einfach diesen Befehl " +"aus:" #. type: Fenced code block (bash) #: support/documentation/content/en/contributing/document/_index.md @@ -526,8 +815,15 @@ msgstr "hugo serve -s support/documentation/\n" #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "Then open your browser on the address [http://localhost:1313/peertube-plugin-livechat/](http://localhost:1313/peertube-plugin-livechat/). This page will automatically refresh on each modification." -msgstr "Öffnen Sie dann Ihren Browser und gehen Sie auf die Adresse [http://localhost:1313/peertube-plugin-livechat/](http://localhost:1313/peertube-plugin-livechat/). Diese Seite wird bei jeder Änderung automatisch aktualisiert." +msgid "" +"Then open your browser on the address [http://localhost:1313/peertube-plugin-" +"livechat/](http://localhost:1313/peertube-plugin-livechat/). This page will " +"automatically refresh on each modification." +msgstr "" +"Öffnen Sie dann Ihren Browser und gehen Sie auf die Adresse [http://" +"localhost:1313/peertube-plugin-livechat/](http://localhost:1313/peertube-" +"plugin-livechat/). Diese Seite wird bei jeder Änderung automatisch " +"aktualisiert." #. type: Title ## #: support/documentation/content/en/contributing/document/_index.md @@ -537,8 +833,14 @@ msgstr "Aktualisierung von Lokalisierungsdateien und Erstellung von Dokumentatio #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md -msgid "For now, you only have the english version. To update documentation strings, and generate translations, you have to run the `doc-translate.sh` script." -msgstr "Im Moment haben Sie nur die englische Version. Um die Dokumentationszeichenketten zu aktualisieren und Übersetzungen zu erstellen, müssen Sie das Skript `doc-translate.sh` ausführen." +msgid "" +"For now, you only have the english version. To update documentation " +"strings, and generate translations, you have to run the `doc-translate.sh` " +"script." +msgstr "" +"Im Moment haben Sie nur die englische Version. Um die " +"Dokumentationszeichenketten zu aktualisieren und Übersetzungen zu erstellen, " +"müssen Sie das Skript `doc-translate.sh` ausführen." #. type: Plain text #: support/documentation/content/en/contributing/document/_index.md @@ -548,8 +850,19 @@ msgstr "Stellen Sie dazu sicher, dass Sie `po4a` (Version >= 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 @@ -564,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 @@ -576,49 +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." - -#. 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." - -#. type: Plain text -#: support/documentation/content/en/contributing/document/_index.md -#, 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 "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." - -#. 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 "" +"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." + +#. type: Plain text +#: support/documentation/content/en/contributing/document/_index.md +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,45 +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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. 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 @@ -1816,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 @@ -1847,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 @@ -1856,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 @@ -1882,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 @@ -1919,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 @@ -1948,18 +3046,43 @@ msgstr "Prosody mod_firewall" #. 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 @@ -1969,18 +3092,35 @@ 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 %}}\")" -msgstr "![Screenshot des Formulars \"{{% livechat_label prosody_firewall_configuration %}}\".](/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/" +"mod_firewall.png?classes=shadow,border&height=400px \"{{% livechat_label " +"prosody_firewall_configuration %}}\")" #. type: Plain text #: support/documentation/content/en/documentation/admin/mod_firewall.md @@ -1994,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 @@ -2015,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 @@ -2037,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 @@ -2059,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 @@ -2070,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 @@ -2080,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 @@ -2091,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 @@ -2107,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 @@ -2127,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 @@ -2150,73 +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." +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" +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\")" -msgstr "![Sepia Avatar Beispiel](/peertube-plugin-livechat/images/avatar_sepia.png?classes=shadow,border&height=40px \"Sepia\")" +msgid "" +"![Sepia avatar example](/peertube-plugin-livechat/images/avatar_sepia.png?" +"classes=shadow,border&height=40px \"Sepia\")" +msgstr "" +"![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_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" +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\")" -msgstr "![Katzen AvatarBeispiel](/peertube-plugin-livechat/images/avatar_cat.png?classes=shadow,border&height=40px \"Katzen\")" +msgid "" +"![Cats avatar example](/peertube-plugin-livechat/images/avatar_cat.png?" +"classes=shadow,border&height=40px \"Cats\")" +msgstr "" +"![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_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" +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\")" -msgstr "![Vogel Avatar Beispiel](/peertube-plugin-livechat/images/avatar_bird.png?classes=shadow,border&height=40px \"Vögel\")" +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" +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\")" +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" +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\")" +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" +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\")" +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." +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 @@ -2225,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 @@ -2236,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 @@ -2246,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 @@ -2262,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 @@ -2315,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 @@ -2335,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 @@ -2346,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 @@ -2362,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 @@ -2373,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 @@ -2384,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 @@ -2412,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 @@ -2440,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 @@ -2467,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 @@ -2478,28 +3925,55 @@ 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\")" -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\")" +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\")" #. 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\")" -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 \"Diagnoseergebnisse\")" +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 " +"\"Diagnoseergebnisse\")" #. type: Title ## #: support/documentation/content/en/documentation/installation/troubleshooting.md @@ -2521,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 @@ -2537,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 @@ -2570,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 @@ -2609,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 @@ -2626,24 +4161,49 @@ 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\")" -msgstr "![Screenshot einer Peertube Live-Übertragung, bei der der Chat am unteren Ende des Video-Streams eingebettet ist.](/peertube-plugin-livechat/images/embed_chat_in_livestream.png?classes=shadow,border&height=200px \"Einbettung des Chats in einen 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/" +"embed_chat_in_livestream.png?classes=shadow,border&height=200px \"Einbettung " +"des Chats in einen Live-Stream\")" #. 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\")" -msgstr "![Screenshot des \"{{% livechat_label share_chat_link %}}\"-Dialogs, in dem die Option \"{{% livechat_label read_only %}}\" aktiviert ist](/peertube-plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px \"Link teilen 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-" +"plugin-livechat/images/share_readonly.png?classes=shadow,border&height=200px " +"\"Link teilen popup\")" #. type: Plain text #: support/documentation/content/en/documentation/user/obs.md @@ -2653,13 +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\")" -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\")" +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\")" #. 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 @@ -2672,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 @@ -2690,68 +4277,143 @@ msgstr "OBS Dock" #: 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\")" -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 Registerkarte\")" +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 " +"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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. 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 @@ -2761,8 +4423,18 @@ 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 @@ -2783,12 +4455,22 @@ 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:" +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\")" +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 @@ -2798,34 +4480,48 @@ msgstr "" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/announcements.md -msgid "**{{% livechat_label announcements_message_type_standard %}}**: to send a standard message." +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." +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." +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." +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 "Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine Nachricht." +msgid "" +"User that are not owner or administrator of the chatroom can't send such " +"messages." +msgstr "" +"Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine " +"Nachricht." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/announcements.md -msgid "Note: Standards XMPP clients will display announcements as standard messages." +msgid "" +"Note: Standards XMPP clients will display announcements as standard messages." msgstr "" #. type: Yaml Front Matter Hash Value: description @@ -2848,33 +4544,64 @@ 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\")" -msgstr "![Screenshot des Peertube-Formulars für die Live-Übertragung (/peertube-plugin-livechat/images/new_live.png?classes=shadow,border&height=200px \"Neuer Livestream\")" +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 " +"\"Neuer Livestream\")" #. 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\")" -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\")" +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\")" #. 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 @@ -2884,8 +4611,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 @@ -2895,18 +4630,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 @@ -2915,44 +4662,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\")" -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\")" +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\")" #. 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 %}}\")" -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 %}}\")" +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 %}}\")" #. type: Title ## #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -2964,8 +4772,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 @@ -2975,8 +4787,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 @@ -2987,20 +4803,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\")" -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ü\")" +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ü\")" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/basics.md @@ -3009,23 +4843,43 @@ 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\")" -msgstr "![Screenshot des Chat-Konfigurationsformulars.](/peertube-plugin-livechat/images/configure.png?classes=shadow,border&height=200px \"Chatraum konfigurieren\")" +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 " +"konfigurieren\")" #. 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 @@ -3035,13 +4889,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 @@ -3057,8 +4924,14 @@ 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\")" -msgstr "![Screenshot der Seite mit den Kanaloptionen, mit einigen Feldern zur Konfiguration der Chatbot-Befehle.](/peertube-plugin-livechat/images/bot_commands.png?classes=shadow,border&height=400px \"Befehlskonfiguration\")" +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/" +"bot_commands.png?classes=shadow,border&height=400px \"Befehlskonfiguration\")" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/commands.md @@ -3079,64 +4952,137 @@ 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\")" -msgstr "![Screenshot der Seite mit den Kanaloptionen, mit mehreren Feldern zur Konfiguration der verbotenen Wörter.](/peertube-plugin-livechat/images/bot_forbidden_words.png?classes=shadow,border&height=400px \"Konfiguration der verbotenen Wörter\")" +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/" +"bot_forbidden_words.png?classes=shadow,border&height=400px \"Konfiguration " +"der verbotenen Wörter\")" #. 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\")" -msgstr "![Screenshot einer Chat-Nachricht, die mit folgender Begründung gelöscht wurde: \"Keine URL erlaubt\".](/peertube-plugin-livechat/images/bot_deleted_message.png?classes=shadow,border&height=100px \"Gelöschte Nachricht\")" +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/" +"bot_deleted_message.png?classes=shadow,border&height=100px \"Gelöschte " +"Nachricht\")" #. 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 @@ -3154,29 +5100,50 @@ 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\")" -msgstr "![Screenshot der Kanaloptionen; es gibt ein Formular mit mehreren Feldern.](/peertube-plugin-livechat/images/channel_configuration.png?classes=shadow,border&height=400px \"Kanalkonfiguration\")" +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\")" #. 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 @@ -3185,16 +5152,15 @@ 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 -#, fuzzy, no-wrap -#| msgid "The bot can automatically moderate messages containing forbidden words." +#, no-wrap msgid "The bot can automatically moderate duplicate messages." -msgstr "Der Chatbot kann automatisch Nachrichten moderieren, die verbotene Wörter enthalten." +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 "" +msgstr "Keine doppelten Nachrichten" #. type: Title ## #: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md @@ -3206,10 +5172,16 @@ msgstr "Konfiguration" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/no_duplicate.md -#, fuzzy -#| 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 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 einigen Feldern zur Konfiguration eines neuen Timers.](/peertube-plugin-livechat/images/bot_quotes.png?classes=shadow,border&height=200px \"Timer konfiguration\")" +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 @@ -3226,12 +5198,20 @@ 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\")" -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\")" +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 @@ -3247,10 +5227,16 @@ msgstr "Sonderzeichen" #. type: Plain text #: build/documentation/pot_in/documentation/user/streamers/bot/special_chars.md -#, fuzzy -#| msgid "![Screenshot of the channel options page, with several fields to configure the option \"Forbid special characters\".](/peertube-plugin-livechat/images/forbid_special_chars_configuration.png?classes=shadow,border&height=400px \"Forbid special characters configuration\")" -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\")" +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 @@ -3266,18 +5252,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\")" -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ü\")" +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ü\")" #. 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 @@ -3286,28 +5288,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 @@ -3339,18 +5361,41 @@ 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\")" -msgstr "![Screenshot der Emoji-Konfigurationsseite. Es gibt ein Formular, in dem Sie neue Emojis hinzufügen können.](/peertube-plugin-livechat/images/channel_custom_emojis_configuration.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Kanal Emojis Konfiguration\")" +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/" +"channel_custom_emojis_configuration.png?classes=shadow,border&height=400px " +"\"Kanalkonfiguration / Kanal Emojis Konfiguration\")" #. 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\")" -msgstr "![Screenshot einer Chatsitzung mit Nachrichten, die benutzerdefinierte Emojis enthalten. Die Emoji-Auswahl ist geöffnet und zeigt benutzerdefinierte Emojis.](/peertube-plugin-livechat/images/channel_custom_emojis.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Kanal 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 " +"benutzerdefinierte Emojis.](/peertube-plugin-livechat/images/" +"channel_custom_emojis.png?classes=shadow,border&height=400px " +"\"Kanalkonfiguration / Kanal Emojis\")" #. type: Title ### #: build/documentation/pot_in/documentation/user/streamers/emojis.md @@ -3360,13 +5405,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 @@ -3388,8 +5448,16 @@ 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 @@ -3411,22 +5479,44 @@ 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." +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." +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 %}}\"." +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." +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 @@ -3464,18 +5554,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 @@ -3485,18 +5591,33 @@ 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\")" -msgstr "![Screenshot des Formulars für die Kanaloptionen, mit einem Feld zur Konfiguration der Moderationsverzögerung.](/peertube-plugin-livechat/images/moderation_delay_channel_option.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Moderationsverzögerung\")" +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/" +"moderation_delay_channel_option.png?classes=shadow,border&height=400px " +"\"Kanalkonfiguration / Moderationsverzögerung\")" #. 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 @@ -3507,18 +5628,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 @@ -3528,13 +5669,24 @@ 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\")" -msgstr "![Screenshot einer Chat-Nachricht. Neben dem Datum der Nachricht wird ein Timer angezeigt. Der Timer ist in Sekunden.](/peertube-plugin-livechat/images/moderation_delay_timer.png?classes=shadow,border \"Moderationsverzögerungstimer\")" +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/" +"images/moderation_delay_timer.png?classes=shadow,border " +"\"Moderationsverzögerungstimer\")" #. type: Yaml Front Matter Hash Value: description #: build/documentation/pot_in/documentation/user/streamers/moderation.md @@ -3565,8 +5717,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 @@ -3576,63 +5734,142 @@ 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 -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 "" +"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 "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 %}}\"." +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\")" -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\")" +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\")" #. 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\")" -msgstr "![Screenshot einer Chatsitzung. Der aktuelle Benutzer hat kein Nachrichtenfeld. Es gibt eine Nachricht: \"{{% livechat_label muted_anonymous_message %}}\"](/peertube-plugin-livechat/images/anonymous_muted.png?classes=shadow,border&height=400px \"Raumkonfiguration / Stummgeschaltete anonyme Benutzer\")" +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 " +"muted_anonymous_message %}}\"](/peertube-plugin-livechat/images/" +"anonymous_muted.png?classes=shadow,border&height=400px \"Raumkonfiguration / " +"Stummgeschaltete anonyme Benutzer\")" #. 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 @@ -3642,23 +5879,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 @@ -3668,8 +5923,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 @@ -3678,52 +5937,97 @@ 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\")" -msgstr "![Screenshot einer Chatsitzung. Der Moderator hat das Nachrichtenmenü geöffnet, und es gibt eine Schaltfläche \"{{% livechat_label search_occupant_message %}}\".](/peertube-plugin-livechat/images/message_search.png?classes=shadow,border&height=200px \"Nachrichtenverlaufssuche\")" +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 " +"search_occupant_message %}}\".](/peertube-plugin-livechat/images/" +"message_search.png?classes=shadow,border&height=200px " +"\"Nachrichtenverlaufssuche\")" #. type: Plain text #: 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 @@ -3733,8 +6037,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 @@ -3744,18 +6052,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 @@ -3771,8 +6092,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 @@ -3787,7 +6115,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 @@ -3809,33 +6139,77 @@ 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\")" -msgstr "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das obere Menü des Chats ist geöffnet, mit einer \"{{% livechat_label \"moderator_notes\" %}}\"-Schaltfläche.](/peertube-plugin-livechat/images/moderation_notes_open_app_video.png?classes=shadow,border&height=200px \"Öffnen des Moderator Notizen Programms\")" +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 " +"\"moderator_notes\" %}}\"-Schaltfläche.](/peertube-plugin-livechat/images/" +"moderation_notes_open_app_video.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 "![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/moderation_notes_open_app_fullpage.png?classes=shadow,border&height=200px \"Öffnen des Moderator Notizen Programms\")" +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/" +"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\")" -msgstr "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Die Anwendung für Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, einige davon sind mit Benutzern verknüpft.](/peertube-plugin-livechat/images/moderator_notes_app_video_1.png?classes=shadow,border&height=200px \"Moderator Notizen Programm\")" +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, " +"einige davon sind mit Benutzern verknüpft.](/peertube-plugin-livechat/images/" +"moderator_notes_app_video_1.png?classes=shadow,border&height=200px " +"\"Moderator Notizen Programm\")" #. 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\")" -msgstr "![Screenshot eines Peertube-Chats, Vollbild. Die Anwendung für Moderationsnotizen ist geöffnet. Es gibt mehrere Notizen, einige davon sind mit Benutzern verknüpft.](/peertube-plugin-livechat/images/moderator_notes_app_fullpage_1.png?classes=shadow,border&height=200px \"Moderator Notizen Programm\")" +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 " +"mit Benutzern verknüpft.](/peertube-plugin-livechat/images/" +"moderator_notes_app_fullpage_1.png?classes=shadow,border&height=200px " +"\"Moderator Notizen Programm\")" #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/moderation_notes.md @@ -3847,13 +6221,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 @@ -3868,13 +6252,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 @@ -3890,34 +6287,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 @@ -3927,48 +6347,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\")" -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\")" +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\")" #. 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 @@ -4001,18 +6467,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\")" -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\")" +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\")" #. 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 @@ -4027,23 +6514,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 @@ -4057,28 +6556,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 @@ -4088,23 +6610,45 @@ 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\")" -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 oberen Rand des Chats, auf dem die Frage und die Anzahl der Stimmen für die einzelnen Antworten zu sehen sind.](/peertube-plugin-livechat/images/polls_start.png?classes=shadow,border&height=200px \"Umfragestart\")" +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 " +"oberen Rand des Chats, auf dem die Frage und die Anzahl der Stimmen für die " +"einzelnen Antworten zu sehen sind.](/peertube-plugin-livechat/images/" +"polls_start.png?classes=shadow,border&height=200px \"Umfragestart\")" #. 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 @@ -4113,43 +6657,90 @@ 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\")" -msgstr "![Screenshot einer Chatsitzung mit einer laufenden Umfrage. Der aktuelle Benutzer hat gerade abgestimmt, indem er \"!1\" gesendet hat.](/peertube-plugin-livechat/images/polls_votes.png?classes=shadow,border&height=200px \"Umfrage abstimmen\")" +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-" +"plugin-livechat/images/polls_votes.png?classes=shadow,border&height=200px " +"\"Umfrage abstimmen\")" #. 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\")" -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 \"Umfrageende\")" +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 " +"\"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 @@ -4165,8 +6756,12 @@ msgstr "Langsamer Modus" #. 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 @@ -4185,8 +6780,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 @@ -4201,23 +6800,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\")" -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\")" +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\")" #. 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 @@ -4229,17 +6850,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\")" -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\")" +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\")" #. 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 @@ -4255,8 +6891,15 @@ msgstr "Aufgaben / To-do-Listen" #. 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 @@ -4265,13 +6908,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 @@ -4287,43 +6938,94 @@ 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\")" -msgstr "![Screenshot eines Peertube-Videos, mit dem Chat auf der rechten Seite. Das obere Menü des Chats ist geöffnet, mit einer Schaltfläche \"{{% livechat_label tasks %}}\".](/peertube-plugin-livechat/images/task_open_app_video.png?classes=shadow,border&height=200px \"Öffnen der Aufgabenanwendung\")" +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 \"{{% " +"livechat_label tasks %}}\".](/peertube-plugin-livechat/images/" +"task_open_app_video.png?classes=shadow,border&height=200px \"Öffnen der " +"Aufgabenanwendung\")" #. 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\")" -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\")" +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\")" #. 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\")" -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\")" +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 \"Aufgabenanwendung\")" +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 "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 "" +"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." +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 @@ -4333,13 +7035,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 @@ -4348,8 +7060,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\")" -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\")" +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\")" #. type: Title ### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4365,18 +7083,37 @@ 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\")" -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\")" +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\")" #. 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\")" -msgstr "![Screenshot der Aufgabenanwendung. Unter der ersten Aufgabenliste wurde eine neue Aufgabe erstellt.](/peertube-plugin-livechat/images/task_app_task_1.png?classes=shadow,border&height=200px \"Aufgabe erstellt\")" +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/" +"task_app_task_1.png?classes=shadow,border&height=200px \"Aufgabe erstellt\")" #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4387,17 +7124,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\")" -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\")" +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\")" #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4407,18 +7157,36 @@ 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\")" -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\")" +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\")" #. 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\")" -msgstr "![Screenshot der Aufgabenanwendung. Es gibt eine Aufgabe, die über eine andere Aufgabenliste gezogen wird.](/peertube-plugin-livechat/images/task_drag_drop_task_list.png?classes=shadow,border&height=200px \"Drag und drop zum verschieben zu einer anderen Liste\")" +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/" +"task_drag_drop_task_list.png?classes=shadow,border&height=200px \"Drag und " +"drop zum verschieben zu einer anderen Liste\")" #. type: Title #### #: support/documentation/content/en/documentation/user/streamers/tasks.md @@ -4428,28 +7196,69 @@ 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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. 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\")" -msgstr "![Screenshot der Aufgabenanwendung. Eine neue Aufgabe wurde in der Aufgabenliste \"Chat-Fragen\" hinzugefügt, mit dem Spitznamen des Benutzers und der Nachricht als Inhalt.](/peertube-plugin-livechat/images/task_from_message_3.png?classes=shadow,border&height=200px \"Aufgabe erstellt\")" +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 " +"und der Nachricht als Inhalt.](/peertube-plugin-livechat/images/" +"task_from_message_3.png?classes=shadow,border&height=200px \"Aufgabe " +"erstellt\")" #. 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 @@ -4465,23 +7274,44 @@ msgstr "Nutzungsbedingungen" #. 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 "" +"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 "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):" +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\")" -msgstr "![Screenshot des Formulars für die Kanaloptionen mit einem Feld für die Konfiguration der Nutzungsbedingungen.](/peertube-plugin-livechat/images/channel_terms_config.png?classes=shadow,border&height=400px \"Kanalkonfiguration / Nutzungsbedingungen\")" +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/" +"channel_terms_config.png?classes=shadow,border&height=400px " +"\"Kanalkonfiguration / Nutzungsbedingungen\")" #. 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 @@ -4496,33 +7326,68 @@ 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\")" -msgstr "![Screenshot einer Chatsitzung. Am oberen Rand des Chats stehen die Bedingungen für den Server und den Kanal.](/peertube-plugin-livechat/images/terms.png?classes=shadow,border&height=400px \"Nutzungsbedingungen\")" +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/" +"terms.png?classes=shadow,border&height=400px \"Nutzungsbedingungen\")" #. 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 @@ -4538,20 +7403,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\")" -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\")" +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\")" #. 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 @@ -4561,23 +7441,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\")" -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\")" +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\")" #. 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\")" -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\")" +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\")" #. type: Title #### #: support/documentation/content/en/documentation/user/viewers.md @@ -4587,13 +7493,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 @@ -4603,13 +7527,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 @@ -4619,13 +7558,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 "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." +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\")" -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\")" +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\")" #. type: Title ## #: support/documentation/content/en/documentation/user/viewers.md @@ -4635,23 +7595,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 @@ -4662,17 +7647,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\")" -msgstr "![Screenshot einer Chatsitzung, rechts die Liste der Teilnehmer](/peertube-plugin-livechat/images/open_participants_list.png?classes=shadow,border&height=200px \"Teilnehmerliste\")" +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\")" #. 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 @@ -4682,8 +7678,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 @@ -4693,19 +7698,31 @@ 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\")" -msgstr "![Screenshot des Chats über die gesamte Webseite.](/peertube-plugin-livechat/images/fullscreen.png?classes=shadow,border&height=200px \"Vollbild Chat Bildschirmfoto\")" +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 " +"Bildschirmfoto\")" #. 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 @@ -4715,8 +7732,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 @@ -4737,33 +7758,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." +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." +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." +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:" +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\")" +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." +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 @@ -4772,8 +7828,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 @@ -4789,8 +7850,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 @@ -4799,18 +7867,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 @@ -4820,33 +7907,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 @@ -4856,13 +7971,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\")" -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\")" +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\")" #. type: Title ## #: support/documentation/content/en/intro/_index.md @@ -4872,48 +8003,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 @@ -4923,18 +8111,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 @@ -4944,18 +8148,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 @@ -4971,109 +8191,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 "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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 11.0.0 verfügbar sein." #~ 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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.1.0 verfügbar sein." #~ 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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 11.1.0 verfügbar sein." #~ 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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.3.0 verfügbar sein." #~ 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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.2.0 verfügbar sein." #~ 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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 8.3.0 verfügbar sein." #~ 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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 10.0.0 verfügbar sein." #~ 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." +#~ msgstr "" +#~ "Diese Funktion wird mit dem Livechatplugin Version 9.0.0 verfügbar sein." -#~ 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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "![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 "" +#~ "![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 "" +#~ "![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_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 "" +#~ "![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 "" +#~ "![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 "" +#~ "![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 "" +#~ "![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 "" +#~ "![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)" +#~ 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 "" @@ -5082,33 +8402,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" @@ -5118,11 +8460,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." @@ -5130,43 +8499,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`" @@ -5174,22 +8609,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" From e940fdc2d350df5b516552658b040b9b109b65bc Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Thu, 12 Sep 2024 14:47:37 +0000 Subject: [PATCH 065/120] Translated using Weblate (Arabic) Currently translated at 13.5% (122 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/ar/ --- support/documentation/po/livechat.ar.po | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/support/documentation/po/livechat.ar.po b/support/documentation/po/livechat.ar.po index 388dd3e8..85f25395 100644 --- a/support/documentation/po/livechat.ar.po +++ b/support/documentation/po/livechat.ar.po @@ -7,15 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: peertube-plugin-livechat-documentation VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-08-30 20:08+0000\n" +"PO-Revision-Date: 2024-09-12 15:37+0000\n" "Last-Translator: ButterflyOfFire \n" -"Language-Team: Arabic \n" +"Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "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" +"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.2\n" #. type: Yaml Front Matter Hash Value: description #: support/documentation/content/en/contact/_index.md @@ -229,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 @@ -1218,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 @@ -2037,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 @@ -2309,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 @@ -2700,7 +2702,7 @@ msgstr "" #: support/documentation/content/en/documentation/user/streamers/announcements.md #, no-wrap msgid "Announcements" -msgstr "" +msgstr "الإعلانات" #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/announcements.md From aaea13a2fc549b83a4cf6038377889f3e66c9125 Mon Sep 17 00:00:00 2001 From: Victor Hampel Date: Sat, 14 Sep 2024 18:30:18 +0000 Subject: [PATCH 066/120] Translated using Weblate (German) Currently translated at 100.0% (899 of 899 strings) Translation: PeerTube LiveChat/Peertube Plugin Livechat Documentation Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat-documentation/de/ --- support/documentation/po/livechat.de.po | 47 +++++++++++++++++++------ 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/support/documentation/po/livechat.de.po b/support/documentation/po/livechat.de.po index 353840fa..23697e82 100644 --- a/support/documentation/po/livechat.de.po +++ b/support/documentation/po/livechat.de.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-09-12 12:53+0200\n" -"PO-Revision-Date: 2024-09-09 19:39+0000\n" -"Last-Translator: Victor Hampel \n" -"Language-Team: German \n" +"PO-Revision-Date: 2024-09-15 01:49+0000\n" +"Last-Translator: Victor Hampel " +"\n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4441,17 +4441,19 @@ msgstr "" #, 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 "" +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 "" +msgstr "Diese Meldungen sind deutlicher sichtbar als Standardmeldungen." #. type: Plain text #: support/documentation/content/en/documentation/user/streamers/announcements.md @@ -4460,6 +4462,9 @@ msgid "" "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 @@ -4472,11 +4477,18 @@ msgid "" "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 "" +msgstr "Es gibt verschiedene Nachrichtentypen:" #. type: Bullet: '* ' #: support/documentation/content/en/documentation/user/streamers/announcements.md @@ -4484,6 +4496,8 @@ 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 @@ -4491,6 +4505,8 @@ 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 @@ -4499,6 +4515,10 @@ msgid "" "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 @@ -4507,22 +4527,27 @@ msgid "" "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 -#, fuzzy msgid "" "User that are not owner or administrator of the chatroom can't send such " "messages." msgstr "" -"Wenn sich kein Benutzer im Chatraum befindet, sendet der Chatbot keine " -"Nachricht." +"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 From 0cc87e95e987568e4569ee397b555f69ad366dcf Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 16 Sep 2024 11:34:44 +0200 Subject: [PATCH 067/120] Disabling new @typescript-eslint/no-magic-numbers rule. --- eslint.config.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 4dbd21f0..7793adaf 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -70,6 +70,7 @@ export default tseslint.config( '@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-len': [ 'error', { @@ -104,6 +105,7 @@ export default tseslint.config( '@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', From 98eb12104ced591279bbb26b21a15ddab58264f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 09:36:28 +0000 Subject: [PATCH 068/120] Bump send and express Bumps [send](https://github.com/pillarjs/send) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together. Updates `send` from 0.18.0 to 0.19.0 - [Release notes](https://github.com/pillarjs/send/releases) - [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md) - [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0) Updates `express` from 4.20.0 to 4.21.0 - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md) - [Commits](https://github.com/expressjs/express/compare/4.20.0...4.21.0) --- updated-dependencies: - dependency-name: send dependency-type: indirect - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 179 +++++++++++++++++----------------------------- 1 file changed, 64 insertions(+), 115 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43dec93e..dbe34561 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5193,21 +5193,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/qs": { - "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.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -7441,9 +7426,9 @@ } }, "node_modules/express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -7458,7 +7443,7 @@ "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.3", @@ -7467,11 +7452,11 @@ "parseurl": "~1.3.3", "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.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -7659,13 +7644,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", @@ -7676,6 +7661,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", @@ -10378,12 +10372,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" @@ -10991,48 +10985,27 @@ } }, "node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "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/serve-static/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/serve-static/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8" } }, "node_modules/set-function-length": { @@ -16735,17 +16708,6 @@ "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" - }, - "dependencies": { - "qs": { - "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.6" - } - } } }, "boolbase": { @@ -18409,9 +18371,9 @@ } }, "express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "requires": { "accepts": "~1.3.8", @@ -18426,7 +18388,7 @@ "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.3", @@ -18435,11 +18397,11 @@ "parseurl": "~1.3.3", "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.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -18580,18 +18542,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": { @@ -20513,12 +20483,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": { @@ -20933,43 +20903,22 @@ } }, "serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "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" + "send": "0.19.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==", + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - } } } }, From 80274ecee342fda88973a353b39c8dcf3abc761b Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 16 Sep 2024 15:03:14 +0200 Subject: [PATCH 069/120] TODO --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5095abe..25030654 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ TODO Before releasing: * update ConverseJS with latest merges (there are currently some known bugs). +* as the Prosody version changes, check these stress test https://github.com/JohnXLivingston/livechat-perf-test/tree/main/tests/33-prosody-gc and apply the correct gc parameter. ### Importante Notes From 149bab2fc5584264b742f7c32f8a391dddbff345 Mon Sep 17 00:00:00 2001 From: John Livingston Date: Mon, 16 Sep 2024 15:04:19 +0200 Subject: [PATCH 070/120] TODO --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25030654..77ba60a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ TODO Before releasing: * update ConverseJS with latest merges (there are currently some known bugs). -* as the Prosody version changes, check these stress test https://github.com/JohnXLivingston/livechat-perf-test/tree/main/tests/33-prosody-gc and apply the correct gc parameter. +* as the Prosody version changes, check these stress test https://github.com/JohnXLivingston/livechat-perf-test/tree/main/tests/33-prosody-gc and apply the correct gc parameter. Also see https://github.com/JohnXLivingston/peertube-plugin-livechat/issues/300 ### Importante Notes From baf08ae3219c52dc6c9c506dbc4b813cc4555f33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 03:51:13 +0000 Subject: [PATCH 071/120] Bump typescript-eslint from 8.5.0 to 8.6.0 Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.5.0 to 8.6.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.6.0/packages/typescript-eslint) --- updated-dependencies: - dependency-name: typescript-eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 450 ++++++++++------------------------------------ 1 file changed, 96 insertions(+), 354 deletions(-) diff --git a/package-lock.json b/package-lock.json index dbe34561..37a67c15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4005,16 +4005,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", - "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", + "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/type-utils": "8.5.0", - "@typescript-eslint/utils": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/type-utils": "8.6.0", + "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4038,15 +4038,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", - "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", + "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4" }, "engines": { @@ -4065,90 +4065,6 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.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/parser/node_modules/@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.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": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/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/@typescript-eslint/parser/node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -4166,47 +4082,20 @@ } } }, - "node_modules/@typescript-eslint/parser/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/parser/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/parser/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/@typescript-eslint/scope-manager": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", + "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4217,13 +4106,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", - "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", + "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/utils": "8.6.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4264,9 +4153,9 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", + "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4277,13 +4166,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", - "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", + "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4364,15 +4253,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", + "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0" + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4386,12 +4275,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", + "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/types": "8.6.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -12352,14 +12241,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz", - "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz", + "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.5.0", - "@typescript-eslint/parser": "8.5.0", - "@typescript-eslint/utils": "8.5.0" + "@typescript-eslint/eslint-plugin": "8.6.0", + "@typescript-eslint/parser": "8.6.0", + "@typescript-eslint/utils": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12374,57 +12263,6 @@ } } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", - "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", - "debug": "^4.3.4" - }, - "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/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/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/uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -15878,16 +15716,16 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", - "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", + "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/type-utils": "8.5.0", - "@typescript-eslint/utils": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/type-utils": "8.6.0", + "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -15895,69 +15733,18 @@ } }, "@typescript-eslint/parser": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", - "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", + "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4" }, "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0" - } - }, - "@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.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" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.4.0", - "eslint-visitor-keys": "^3.4.3" - } - }, - "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", @@ -15967,47 +15754,32 @@ "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/scope-manager": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", + "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", "dev": true, "requires": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0" } }, "@typescript-eslint/type-utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", - "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", + "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/utils": "8.6.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -16030,19 +15802,19 @@ } }, "@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", + "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", - "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", + "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", "dev": true, "requires": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -16093,24 +15865,24 @@ } }, "@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", + "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0" + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0" } }, "@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", + "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", "dev": true, "requires": { - "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/types": "8.6.0", "eslint-visitor-keys": "^3.4.3" } }, @@ -21896,44 +21668,14 @@ "dev": true }, "typescript-eslint": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz", - "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz", + "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "8.5.0", - "@typescript-eslint/parser": "8.5.0", - "@typescript-eslint/utils": "8.5.0" - }, - "dependencies": { - "@typescript-eslint/parser": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", - "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", - "debug": "^4.3.4" - } - }, - "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" - } - }, - "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 - } + "@typescript-eslint/eslint-plugin": "8.6.0", + "@typescript-eslint/parser": "8.6.0", + "@typescript-eslint/utils": "8.6.0" } }, "uid-safe": { From 05b1f0f645f5580ccba726c80633bcff3c79b5a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 03:51:28 +0000 Subject: [PATCH 072/120] Bump eslint from 8.57.0 to 8.57.1 Bumps [eslint](https://github.com/eslint/eslint) from 8.57.0 to 8.57.1. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.57.0...v8.57.1) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index dbe34561..2a651a76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2090,13 +2090,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "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": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -6610,16 +6610,16 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@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", @@ -6983,9 +6983,9 @@ } }, "node_modules/eslint/node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "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" @@ -14434,12 +14434,12 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "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": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -17785,16 +17785,16 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@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", @@ -17831,9 +17831,9 @@ }, "dependencies": { "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "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": { From f98013f2be6edfdc662b2ad111403f50ab29b6dc Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Mon, 16 Sep 2024 10:09:20 +0000 Subject: [PATCH 073/120] Translated using Weblate (Croatian) Currently translated at 92.7% (293 of 316 strings) Translation: PeerTube LiveChat/Peertube Plugin LiveChat Translate-URL: https://weblate.framasoft.org/projects/peertube-livechat/peertube-plugin-livechat/hr/ --- languages/hr.yml | 87 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 2 deletions(-) diff --git a/languages/hr.yml b/languages/hr.yml index f4ebcca2..6e849d5f 100644 --- a/languages/hr.yml +++ b/languages/hr.yml @@ -54,8 +54,7 @@ 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_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 @@ -342,3 +341,87 @@ poll_anonymous_vote_ok: Tvoje se glasanje uzima u obzir. Glasanja su anonimna, n 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